关于PHP中类的加载【PHP教程】

!
也想出现在这里? 联系我们
信息

关于PHP中类的加载,第1张

概述关于PHP中类的加载 面向对象是一个重要的思想,类也是面向对象中的重要概念,而类的加载却是使用类的关键。

类的访问方式有两种:

通过实例化对象访问

类成员访问

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

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.自动加载

在PHP7之前使用的自动加载机制:利用系统提供的__autoload()函数,然后当系统需要使用类,而内存中又不存在的时候,系统就会自动调用__autoload()函数来加载类文件。

<?PHPfunction __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;    }}?>

在PHP7后,不建议使用__autoload()函数,而是使用一种注册机制,将用户自定义的函数,放到系统内部,使用spl_autoload_register(定义好的函数)。

<?PHPfunction 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');?>
//可以定义多个方法<?PHPfunction wayone_autoload($classname){		   function waytwo_autoload($classname){		    }//此时,上述函数永远不会自动运行,除非将函数注册到系统内部spl_autoload_register('wayone_autoload');spl_autoload_register('waytwo_autoload');?>

推荐:php教程 总结

以上是内存溢出为你收集整理的关于PHP中类的加载全部内容,希望文章能够帮你解决关于PHP中类的加载所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞125 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容