PHP類自動加載技術

在咱們平時用框架好比laravel時,只要在app目錄下的任意路基文件中,以下使用就能夠實例化一個對象。php

$u = new App\Model\User()

咱們知道,原生PHP要想實例化一個其餘文件中的類,必須把該文件 include/require 進來。而框架中不須要引入文件,直接就能夠實例化對象是如何實現的呢?答案就是類自動加載技術。laravel

PSR-4

psr-4,叫文件路徑自動載入規範。咱們的類自動加載技術就必須遵守這個規範。規範介紹不是本文重點,有興趣的朋友能夠查閱 https://www.php-fig.org/psr/psr-4/。app

 

項目

目錄結構

.
|____app
| |____Test.php
|____index.php

 

代碼

app目錄下的Test.php中的代碼以下:框架

<?php namespace App;

class Test
{
    public function aa()
    {
        echo 123;
    }
}

 

index.php代碼以下:ui

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();

這樣我們的類自動加載就實現了。spa

第8行是否是和我們在一個框架中聲明一個對象的方式很像呢。code

 

結果:對象

123
相關文章
相關標籤/搜索