类别:PHP问题 / 日期:2019-11-26 / 浏览:209 / 评论:0
php进口文件的作用
php进口文件能够完成自动加载功用。
剖析PHP进口文件的自动加载功用
php的自动加载:
在php5之前,我们要用某个类或类的要领,那必需include或许require,以后才运用,每次用一个类,都需要写一条include,贫苦
php作者想简单点,最好能援用一个类时,假如当前没有include进来,体系能自动去找到该类,自动引进~
因而:__autoload()函数应运而生。
一般放在应用程序进口类内里,比方discuz中,放在class_core.php中。
引荐:《PHP教程》
先讲浅易的例子:
第一种状况:文件A.php中内容以下
<?php class A{ public function __construct(){ echo 'fff'; } } ?>
文件C.php 中内容以下:
<?php function __autoload($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } $a = new A(); //这边会自动挪用__autoload,引入A.php文件 ?>
第二种状况:偶然我愿望能自定义autoload,而且愿望起一个更酷的名字loader,则C.php改成以下:
<?php function loader($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register('loader'); //注册一个自动加载要领,掩盖原有的__autoload $a = new A(); ?>
第三种状况:我愿望嵬峨上一点,用一个类来治理自动加载
<?php class Loader { public static function loadClass($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); $a = new A(); ?>
当前为最好情势。
一般我们将spl_autoload_register(*)放在进口剧本,即一开始就援用进来。比方下面discuz的做法。
if(function_exist('spl_autoload_register')){ spl_autoload_register(array('core','autoload')); //假如是php5以上,存在注册函数,则注册本身写的core类中的autoload为自动加载函数 }else{ function __autoload($class){ //假如不是,则重写php原生函数__autoload函数,让其挪用本身的core中函数。 return core::autoload($class); } }
这段扔在进口文件最前面,自然是极好的~
以上就是php进口文件的作用的细致内容,更多请关注ki4网别的相干文章!