首页> 基础笔记 >PHP基础学习 >面向对象 面向对象
php面向对象之自动加载类
作者:小萝卜 2019-09-03 【 PHP 面向对象 】 浏览 1422
简介php面向对象之自动加载类,PHP5提供了一个__autoload()来解决这个问题。当new实例化一个不存在的类时,则自动调用此函数“__autoload()”,并将类名作为参数传入此函数。我可以使用这个实现类的自动加载。
php面向对象之自动加载类
在编写面向对象程序时,常规做法是将每一个类保存为一个PHP源文件。当在一个PHP文件中需要调用一个类时很容易就可以找到,然后通过include(或require)把这个文件引入就可以了。不过有的时候,在项目中文件众多,要一一将所需类的文件include进来,是一个很让人头疼的事。
PHP5提供了一个__autoload()来解决这个问题。当new实例化一个不存在的类时,则自动调用此函数“__autoload()”,并将类名作为参数传入此函数。我可以使用这个实现类的自动加载。
在组织定义类的文件名时,需要按照一定的规则,最好以类名为中心,加上统一的前缀或后缀形成文件名:class_student.php 或 student_class.php 或 student.php
实例1:
<?php
/**
声明一个自动加载类的魔术方法__autoload()
@param string $className 需要加载的类名称字符串
*/
function __autoload($className) {
//拼装成类名对应的文件名,视具体定义规则而定
$filename = strtolower($className).".class.php";
//先判断类文件是否存在
if(file_exists($filename)){
//在方法中使用include包含类所在的文件,也可以使用require导入
include($filename);
}else{
die("自动加载{$className}类失败!");
}
}
//User类不存在则自动调用__autoload()函数,将类名“User”作为参数传入
$obj = new User();
//Shop类不存在则自动调用__autoload()函数,将类名“Shop”作为参数传入
$obj2 = new Shop();
实例2:
<?php
//自动加载的使用
function __autoload($classname){
//先判断类文件是否存在,再尝试调用。
if(file_exists($classname.".class.php")){
require($classname.".class.php");
}
}
//require("Stu.class.php");
//当实例化一个不存在的类时,会尝试调用魔术方法__autoload()
$stu = new Stu("zhangsan",20);
echo $stu;
很赞哦! (0)
上一篇:PHP对象串行化