微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

<?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教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐