|
类的访问方式有两种: 而访问的前提便是内存中有类的存在,所以需要提前将类加载至内存中。
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中类的加载的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |