• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php _autoload自动加载类与机制分析_php基础

php 搞代码 3年前 (2022-01-26) 18次浏览 已收录 0个评论

在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可
test.class.php

 <BR><strong style="color:transparent">本&文来源gao@daima#com搞(%代@#码网@</strong><textarea>搞gaodaima代码</textarea><?php <BR>class abc{ <BR>function __construct() <BR>{ <BR>echo 'www.hzhuti.com; <BR>} <BR>} <BR>?> <BR>


load.php
代码如下

 <BR><?php <BR>class LOAD <BR>{ <BR>static function loadClass($class_name) <BR>{ <BR>$filename = $class_name.".class.php"; <BR>if (is_file($filename)) return include_once $filename; <BR>} <BR>} <BR>/** <BR>* 设置对象的自动载入 <BR>* spl_autoload_register — Register given function as __autoload() implementation <BR>*/ <BR>spl_autoload_register(array('LOAD', 'loadClass')); <BR>$a = new Test();//实现自动加载,很多框架就用这种方法自动加载类 <BR>?> <BR>


__autoload()
在实际项目中,不可能把所有的类都写在一个 PHP 文件中,当在一个 PHP 文件中需要调用另一个文件中声明的类时,就需要通过 include 把这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都 include 进来,一个很大的烦恼是不得不在每个类文件开头写一个长长的包含文件的列表。我们能不能在用到什么类的时候,再把这个类所在的 php 文件导入呢?
为此,PHP 提供了 __autoload() 方法,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。
__autoload() 方法接收的一个参数,就是欲加载的类的类名,所以这时候需要类名与文件名对应,如 Person.php ,对应的类名就是 Pserson 。
下面看个完整的实例

 <BR>class ClassA{ <BR>public function __construct(){ <BR>echo “ClassA load success!”; <BR>} <BR>} <BR>//定义一个类ClassA,文件名为ClassA.php <BR>class ClassA{ <BR>public function __construct(){ <BR>echo “ClassA load success!”; <BR>} <BR>} <BR>class ClassB extends ClassA { <BR>public function __construct(){ <BR>//parent::__construct(); <BR>echo “ClassB load success!”; <BR>} <BR>} <BR>//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA <BR>class ClassB extends ClassA { <BR>public function __construct(){ <BR>//parent::__construct(); <BR>echo “ClassB load success!”; <BR>} <BR>} <BR>


定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下:

 <BR>function __autoload($classname){ <BR>$classpath=”./”.$classname.'.php'; <BR>if(file_exists($classpath)){ <BR>require_once($classpath); <BR>} <BR>else{ <BR>echo ‘class file'.$classpath.'not found!'; <BR>} <BR>} <BR>$newobj = new ClassA(); <BR>$newobj = new ClassB(); <BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php _autoload自动加载类与机制分析_php基础
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址