php7 自動載入的實現

2021-10-07 23:08:30 字數 1967 閱讀 6905

本部落格參考在實際專案中,各個類都放在單獨的乙個檔案中,在實際專案的執行過程中需要呼叫許多類來共同協調,因此每次呼叫其它類檔案都需要使用include或require結構來完成呼叫,為了減少**的冗餘度,php支援自動載入機制以自動呼叫需要的類檔案。

對單個檔案的載入:使用require語句

呼叫類時自動執行的自動載入註冊函式:spl_autoload_register

php7對命名空間的支援,在檔案路徑組合時僅需要使用根路徑和命名空間

檔案結構:

autoload --根目錄

–autoload --自動載入

–test --庫檔案

autoload_test.php --測試檔案

/* *實現類的自動載入

* 1.實現對檔案的載入

* 2.自動載入函式

* 3.目錄的新增

* 4.命名空間的處理

*/namespace

autoload

;class

loader

//4.註冊類自動載入函式

public

static

function

init

($dirs

=array()

)if(self:

:$registered==0

)}//3.新增目錄

public

static

function

adddirs

($dirs

)else

}//2.實現類的自動載入

public

static

function

autoload

($class)}

//載入當前目錄下的檔案if(

!$success)}

return

$success;}

//1.載入單一檔案

public

static

function

loadfile

($file

)else

}}testclass.php:

<?php 

namespace

test

;class

testclass

}

autoload_test.php:

<?php 

require_once

__dir__

."/autoload/loader.php"

;//目錄集合

/*$dirs = array(

__dir__.'\autoload',

__dir__.'\test'

);*/

//初始化該類

autoload\loader::

init

(__dir__);

//獲取乙個沒有被載入的類的例項

$test

=new

test\testclass()

;echo

$test

->

gettest()

;//獲取乙個不存在的類

$fake

=new

test\faketest()

;//丟擲異常

echo

$fake

->

gettest()

;

在例項化test\testclass類的時候,test\testclass命名空間會作為loader.php中autoload方法的引數,從而構造出相應的完整路徑並判斷其十分存在選擇是否進行載入。

PHP7實現多程序

我們都知道php是單程序執行的,php處理多併發主要是依賴伺服器或php fpm的多程序及它們程序的復用,但php實現多程序也意義重大,尤其是在後台cli模式下處理大量資料或執行後台demon守護程序時,多程序的優勢不用多說。php的多執行緒也曾被人提及,但程序內多執行緒資源共享和分配的問題難以解決...

PHP 實現自動載入

自動載入主要是省去了乙個個類去 include 的繁瑣,在 new 時動態的去檢查並 include 相應的 class 檔案。先上 index.php class classautoloader else public static function register autoloader cla...

php7實踐指南 ch9類與方法 自動載入

9.4 自動載入 很多時候寫物件導向的應用程式時對每個類的定義建立乙個php原始檔。乙個很大的煩惱是不得不在每個指令碼開頭寫乙個長長的包含檔案列表 每個類乙個檔案 對於每乙個類檔案都需要使用require或者include引入。php中提供了兩個可用來自動載入檔案的函式 autoload 和spl ...