PHP自动加载机制介绍——spl_autoload_register()函数,php类自动加载-php教程

资源魔 25 0
* include 以及 require 性能是同样的,它们的没有同正在于 include 犯错时只会孕育发生正告,而 require 会抛犯错误终止剧本。

* include_once 以及 include 惟一的区分正在于 include_once 会反省文件能否曾经引入,假如是则没有会反复引入。

spl_autoload_register() 函数是完成主动加载不决义类性能的的首要办法,所谓的主动加载意义就是 咱们的new 一个类的时分必需先include或许require的类文件,假如不include或许require,则会报错。那这样咱们就必需正在文件头部写上许多include或require文件,十分费事,

为了使患上不include或许require类的时分也失常new一个类,以是有了主动加载的概念,也就是说new一个类以前不必事前蕴含类文件也能够失常new,这样咱们的文件头部就不必蕴含许多include(require)。其实这算一种封装!

用spl_autoload_register函数能够完成下面说的性能,咱们来看看完成原理。

这个函数的参数以下:

第一个参数:autoload_function

这是一个函数【办法】称号,能够是字符串或许数组(挪用类办法应用)。这个函数(办法)的性能就是,来把需求new 的类文件蕴含include(requeire)出去,这样new的时分就没有会找没有到文件了。其实就是封装整个名目的include以及require性能。

第二个参数:throw

此参数设置了 autoload_function 无奈胜利注册时, spl_autoload_register()能否抛出异样。

第三个参数:prepend

假如是 true,spl_autoload_register() 会增加函数到行列步队之首,而没有是行列步队尾部。

当咱们new一个类,而且这个类文件不被蕴含时分就会执行这个autoload_function办法

先来看一个谬误例子:+++++++++++++++++++++

<?php
//当咱们间接new一个未蕴含class类文件时分会报错
$objDemo = new AutoloadClass();

正确的应用 spl_autoload_register() 函数

经过上面例子咱们能够看到,当new一个未蕴含的类时分,会去执行spl_autoload_register第一个参数函数名的函数,这个函数有一个参数就是需求new的类名,这个函数的性能就是把这个类给蕴含出去(类名以及文件名分歧),这样就完成了主动加载性能。原理就是这样,没有是很复杂。

<?php
// 界说对象类正在效劳器地位 常量
define('TOOLS_ROOT', __DIR__ . '/');
 
//文件 autoloadClass.php ,需求new的文件
class AutoloadClass{
 
    public function __construct()
    {
        // echo '你曾经蕴含我了';
    }
}
//文件autoloadDemo.php文件
spl_autoload_register('myAutoLoad', true, true);
function myAutoLoad($className){
    $classFileName = TOOLS_ROOT."{$className}.php";
    include $classFileName;
}

另外,咱们能够改成匿名函数来完成:

<?php
 
// 界说对象类正在效劳器地位 常量
define('TOOLS_ROOT', __DIR__ . '/');
 
//文件 autoloadClass.php ,需求new的文件
class AutoloadClass{
 
    public function __construct()
    {
        // echo '你曾经蕴含我了';
    }
}
spl_autoload_register(function ($className)
{
    $classFileName = TOOLS_ROOT."{$className}.php";
    include $classFileName;
}, true, true);
$objDemo = new AutoloadClass();

更多PHP相干常识,请拜访PHP中文网!

以上就是PHP主动加载机制引见——spl_autoload_register()函数,php类主动加载的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 自动加载

抱歉,评论功能暂时关闭!