• 技术文章 >后端开发 >php教程

    关于PHP中类的加载

    autoloadautoload2021-04-15 14:15:12原创1519
    面向对象是一个重要的思想,类也是面向对象中的重要概念,而类的加载却是使用类的关键。

    类的访问方式有两种:

    而访问的前提便是内存中有类的存在,所以需要提前将类加载至内存中。

    1.手动加载

    //类文件 Salary.php
    <?php
       class Salary{
          public  function Student(){
            echo "Salary下面的Student方法";
          }
       }
    ?>
    应用文件:useSalary.php
    <?php
    //$s = new Salary();会报错,因为useSalaty.php中间未定义Salary类
    
    include_once 'Salary.php';				//也可以使用require,通常使用_once,因为类不允许重名
    $s = new Salary();
    echo $s->Student();
    ?>
    <?php
    //加载类文件是一种比较消耗资源的方式,可以事先使用class_exists()函数来判定类是否存在,存在就不用加载,不存在才加载
    if(!class_exists('Salary')){
    	//不存在:加载
        include_once 'Salary.php';
    }
    //使用
    $s = new Salary();
    ?>

    2.自动加载

    <?php
    function __autoload($classname){	//参数为类名:即当前需要访问的类的名字
    //需要人为定义去哪加载,怎么加载   
        include_once $classname . '.php';	//假定为当前目录下,类文件名字为:类名.php
    }
    
    //使用类:内存目前并没有
    $s = new Salary();	//系统发现内存没有Salary,所以调用__autoload()去加载
    ?>
    //若在不同路径下
    <?php
    //定义自动加载
    function __autoload($classname){
        $abc_file = 'abc/' . $classname . '.php';		//如abc/Salary.php
        if(file_exists($c_file)){                      //利用file_exists()判断文件是否存在
            include_once $abc_file;
        }
    }
    ?>
    <?php
    function myself_autoload($classname){		//与__autoload()类似
        $abc_file = 'abc/' . $classname . '.php';		//如abc/Salary.php
        if(file_exists($c_file)){
            include_once $c_file;
        }
    }
    //此时,上述函数永远不会自动运行,除非将函数注册到系统内部
    spl_autoload_register('myself_autoload');
    ?>
    //可以定义多个方法
    <?php
    function wayone_autoload($classname){		
       
    function waytwo_autoload($classname){		
        
    }
    //此时,上述函数永远不会自动运行,除非将函数注册到系统内部
    spl_autoload_register('wayone_autoload');
    spl_autoload_register('waytwo_autoload');
    ?>

    推荐:php教程

    php入门到就业线上直播课:查看学习

    以上就是关于PHP中类的加载的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐: 面向对象
    上一篇:详解PHP接口访问频率限制 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 详解PHP匿名类的用法• 详解PHP中类的自动加载• php中类和对象的区别是什么• PHP使用字符串名称调用类的方法是什么
    1/1

    PHP中文网