php 类加载,关于PHP中类的加载

类的访问方式有两种:

通过实例化对象访问

类成员访问

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

1.手动加载

//类文件 Salary.php

class Salary{

public function Student(){

echo "Salary下面的Student方法";

}

}

?>

应用文件:useSalary.php

//$s = new Salary();会报错,因为useSalaty.php中间未定义Salary类

include_once 'Salary.php';//也可以使用require,通常使用_once,因为类不允许重名

$s = new Salary();

echo $s->Student();

?>

//加载类文件是一种比较消耗资源的方式,可以事先使用class_exists()函数来判定类是否存在,存在就不用加载,不存在才加载

if(!class_exists('Salary')){

//不存在:加载

include_once 'Salary.php';

}

//使用

$s = new Salary();

?>

2.自动加载

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

function __autoload($classname){//参数为类名:即当前需要访问的类的名字

//需要人为定义去哪加载,怎么加载

include_once $classname . '.php';//假定为当前目录下,类文件名字为:类名.php

}

//使用类:内存目前并没有

$s = new Salary();//系统发现内存没有Salary,所以调用__autoload()去加载

?>

//若在不同路径下

//定义自动加载

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(定义好的函数)。

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');

?>

//可以定义多个方法

function wayone_autoload($classname){

function waytwo_autoload($classname){

}

//此时,上述函数永远不会自动运行,除非将函数注册到系统内部

spl_autoload_register('wayone_autoload');

spl_autoload_register('waytwo_autoload');

?>

推荐:php教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值