PHP MVC框架中類的自動載入機制例項分析

2022-09-26 04:48:12 字數 2015 閱讀 6491

原文

實現類的自動載入主要使用到了set_include_path和spl_autoload_register函式。

set_include_path用於提前設定好可能會載入的類的路徑。

spl_autoload_register用於呼叫相關自動載入所需類的函式,實現自動載入的功能。

有一點要注意的是:自動載入在例項化類的時候執行,也就是說使用extends繼承類的時候,是不會自動載入父類的。

設定目錄如下:

實現自動載入功能相關的檔案有:loader.php,config.php,boot.php,index.php

config.php

<?php /**

* created by phpstorm.

* user: koastal

* date: 2016/5/15

* time: 10:48

*/define("app_path",__dir__."/..");

define("controller_path",__dir__."/../controller");

define("model_path",__dir__."/../model");

define("view_path",__dir__."/../view");

loader.php

<?php /**

* created by phpstorm.

* user: koastal

* date: 2016/5/15

* time: 12:03

*/class loader

public static function autoload($class) }

$include = array(controller_path, model_path,view_path);

set_include_path(get_include_path() . path_separator .implode(path_separatwww.cppcns.comor, $include));

spl_autoload_register(array('loader', 'autoload'));

loader::baseload();

boot.php

<?php /**

* created by phpstorm.

* user: koastal

* date: 2016/5/15

* time: 12:19

*/require_once("loader.php");

index.php

<?php require_once(__dir__."/libs/config.php");

requ"/libs/boot.php");

$obj = new testcontroller();

$obj->show();

經測試,以上**可用,全文完。

加更經測試上面的**,在訪問不存在的控制器是會報錯,找不到相關類檔案。因為我們缺少判斷相關類檔案是否存在。因此,我們對loader.php進行優化,首先掃瞄相關類檔案是否存在,如果不存在則報錯。

<?php /**

* created by phpstorm.

* user: koastal

* date: 2016/5/15

* time: 12:03

*/require_once 'config.php';

class loader

public static function searchfile($filename,$path)

}elseif($file!='.' && $file!='..')}}

return $filepath;

} public static function autoload($class)

else

}}loader::baseload();

spl_autoload_register(array('loader', 'autoload'));

php自動載入類,PHP中類的自動載入的方法

類的自動載入是指,在外面的頁面中,並不需要去 引入 類檔案,但是程式會在需要的時候動態載入需要的類檔案。方法1 使用 autoload魔術函式 當程式需要某個類時,就會去呼叫該函式,該函式我們需要自己去定義並在其中寫好載入類檔案的通用語句。需要類是自動呼叫,而且會傳進來乙個類名,這個案例的檔名為21...

PHP中類的自動載入

首先認識乙個函式 spl autoload register 官方文件 spl autoload register 滿足了多條 autoload 的需求。它實際上建立了 autoload 函式的佇列,按定義時的順序逐個執行。相比之下,autoload 只可以定義一次。沒啥好說的,上段 functio...

PHP中類的自動載入

什麼是類的自動載入?類的自動載入是指 在其他的頁面中,要想使用其他的類檔案,並不需要去 引入 包含的類檔案,程式會在需要乙個類的時候自動去 動態載入 這個類。什麼情況下需要乙個類?建立乙個物件的時候 例項化 class apublic static jingtai obj newa 例項化a類直接使...