在我们平时用框架比如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代码如下:
1 <?php 2 3 spl_autoload_register(function ($class_name) { 4 require_once str_replace('\\', '/', $class_name) . '.php'; 5 }); 6 7 8 $a = new App\Test(); 9 $a->aa();
这样咱们的类自动加载就实现了。
第8行是不是和咱们在一个框架中声明一个对象的方式很像呢。
结果:
123