spl_autoload_register- 到底是什么意思?让我们试着通过一个例子来理解它:
function Autoloader($className)
{
require_once $path.$className.'.php';
}
spl_autoload_register('Autoloader');
$myObj = new MyClass();
在这里,我们刚刚实例化了一个名为“MyClass”的类,没有指定 include 或 require 语句。
是不是很酷?那么我们是怎么做到的呢?让我们深入挖掘。
在这里,我们使用 spl_autoload_register() 函数注册了一个名为“Autoloader”的函数。当我们实例化“MyClass”时,类名(MyClass)由 PHP 传递给“spl_autoload_register()”,注册函数将其作为参数获取。在 Autoloader 函数的定义中,我们已经包含了该类文件的路径。
这简直太棒了!!试想一种情况,您有几个类,并且所有这些类都不会在每种情况下或在每个页面上使用。在这种情况下, spl_autoload_register() 可以成为您的真正救星。
您只需要实例化并且 spl_autoload_register() 将负责休息。
除了注册函数,您还可以按如下方式进行:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
但是这段代码只适用于 PHP >= 5.3.0
您可以将 spl_autoload_register() 视为 __autoload() 的替代,它可以定义为:
__autoload() — 尝试加载未定义的类
让我们试着通过一个例子来理解。
<?php
// we've writen this code where we need
function __autoload($classname) {
$filename = "./". $classname .".php";
include_once($filename);
}
// we've called a class ***
$obj = new myClass();
?>
但它有一个缺点,您需要在每个类文件中编写此函数。