在我们平时用框架比如laravel时,只要在app目录下的任意路基文件中,如下使用就可以实例化一个对象。
$u = new App\Model\User()
我们知道,原生PHP要想实例化一个其他文件中的类,必须把该文件 include/require 进来。而框架中不需要引入文件,直接就可以实例化对象是如何实现的呢?答案就是类自动加载技术。
PSR-4
psr-4,叫文件路径自动载入规范。我们的类自动加载技术就必须遵照这个规范。规范介绍不是本文重点,有兴趣的朋友可以查阅 https://www.php-fig.org/psr/psr-4/。
项目
目录结构
.
|____app
| |____Test.php
|____index.php
代码
app目录下的Test.php中的代码如下:
<?php namespace App; class Test
{
public function aa()
{
echo 123;
}
}
index.php代码如下:
<?php spl_autoload_register(function ($class_name) {
require_once str_replace('\\', '/', $class_name) . '.php';
}); $a = new App\Test();
$a->aa();
这样咱们的类自动加载就实现了。
第8行是不是和咱们在一个框架中声明一个对象的方式很像呢。
结果:
123