在我们平时用框架比如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