php類的自動載入
『壹』 我想嘗試著寫個小型php框架,現在卡在類自動載入和路由實現上了
類自動載入跟路由是框架最基礎的特性
給你點自動載入的思路,首先現在寫框架必須用上命名空間,框架內部的類文件夾根據命名空間命名方便自動載入
在入口文件引入自己寫的Autoload.php 通過spl_autoload_register獲得要載入的類名
spl_autoload_register(function($class_name){
Autoload::splAutoload($class_name);
});
asseek outeRouter
asseekFunc
asseek
outeRoute
appwwwdocsdocsController
asseekController
asseekView
如果你採用命名空間上面函數的$class_name是類似這樣的字元串,只要你有當前項目的初始路徑再根據這段字元串require相應的php文件應該不難,自動載入就搞定了。
路由就更簡單了就是通過$_SERVER['REDIRECT_URL'] 或$_SERVER['REDIRECT_URI'] 獲得用戶訪問的URL,根據自己的框架制定的規則從URL中取得控制器與控制器方法名稱,判斷controller的類是否存在,存在則實例化,再判斷controller的method是否存在,存在則調用方法,方法裡面載入視圖等就是另外的事情了。
『貳』 php綾昏嚜鍔ㄥ姞杞
姝e父錛屼綘鐨勭被鍚嶅凡緇忓己鍒惰漿鎹㈡垚灝忓啓鐨勪簡錛岃屼綘鐨勭被鍚嶆槸澶у皬鍐欐販鍚堢殑錛佸傛灉寮鍚浜嗘枃浠跺悕澶у皬鍐欐嫻嬶紝鑲瀹氬氨鎵句笉鍒頒簡錛
『叄』 PHP怎麼自動載入同一目錄下同一命名空間的類文件
自動載入的,只有在實例化時才會真的載入。實例化時,調用公共空間的方式是直接在元素名稱前加
\
就可以了,否則PHP解析器會認為我想調用當前空間下的元素。
『肆』 php,thinkphp自動載入怎麼實現的呢
php 中有個魔術方法__autoload ,這個函數在找不到類的時候就會調用,自動載入就是在這里實現的。通過指定自動載入類的路徑,只要保證文件名和類名一樣。就可以自動載入。這也是為什麼你看很多源碼中類的名字和文件名一樣的原因,這樣可以實現自動載入,不需要include.