关于PHP的autoload
autoload 是什么?
自动加载文件的机制。
当创建一个类时,由于其可重用性,通常会将一个类管理在一个文件中。
然而,当处理的文件数量增加时,每个脚本都需要在开头逐一进行“require”的操作。
因此,可以使用autoload这个自动加载文件的机制来自动加载文件。
spl_autoload_register (自动加载寄存器)
如果通常情况下没有使用autoload并且没有进行文件加载,那么在这种情况下将会产生致命错误。
<?php
$hoge = new Hoge(); //fatal error
使用spl_autoload_register函数注册自动加载器后,PHP将在发生错误之前调用注册的方法。
如果不使用spl_autoload_register
<?php
require_once 'MyClass1.php';
require_once 'MyClass2.php';
require_once 'MyClass3.php';
$obj = new MyClass1();
$obj2 = new MyClass2();
$obj2 = new MyClass3();
如果使用spl_autoload_register,
<?php
spl_autoload_register(function ($class_name) {
require_once $class_name . '.php';
});
$obj = new MyClass1();
$obj2 = new MyClass2();
$obj3 = new MyClass3();
在composer中设置自动加载
使用composer-autoload可以实现,无需自行创建spl_autoload_register。
下载composer。
$ curl -s https://getcomposer.org/installer | php
composer.json文件
创建一个名为composer.json的文件,并进行autoload的设置。
{
"autoload": {
"psr-4": {
"Namespace\\": "DirName/"
}
}
}
根据psr-4规范创建的名为Namespace的命名空间声明类被设置在名为DirName的目录中。
创建 autoload.php
$ composer dump-autoload
这样,autoload.php会在vender目录中被创建。
然后只需要在bootstrap.php等文件中使用require来加载已创建的autoload.php,即可使用autoload。
(bootstrap.php是用于创建和加载整个应用程序配置的文件。)