接下來我們希望完成乙個「自動載入類」的動能,我們把這個功能放到imooc
這個基礎類當中。
core\imooc.php:
<?php
namespace
core;
class
imooc
/*自動載入的功能
*/static
public
function
load
($class)
elseelse}}
}
上面**中,load()
方法的主要功能就是自動載入類庫。
自動載入的工作原理:
當我們new乙個類的時候,如果它不存在,就會觸發spl_autoload_register
註冊的方法,然後通過這個方法去引入要例項化的類
spl_autoload_register('\core
\imooc::load');
我們在入口檔案index.php
中註冊:
<?php
/*入口檔案
1.定義常量
2.載入函式庫
3.啟動框架
*/// 定義當前框架所在的根目錄
define('imooc', __dir__);
// 定義框架核心檔案所在的目錄
define('core', imooc.'/core');
// 專案檔案所在目錄
// 定義專案除錯模式
define('debug', true);
// 判斷專案是否處於除錯狀態
if (debug) else
// 載入函式庫
include core.'/common/function.php';
// 載入框架核心檔案
include core.'/imooc.php';
// 註冊自動載入
// (當我們new乙個不存在的類的時候會觸發\core\imooc::load)
spl_autoload_register('\core\imooc::load');
\core\imooc::run();
所以,我們在run
方法例項化route類的時候並沒有手動引入該類檔案
static
public
function
run()
上面**,new \core\route()
會觸發load()
方法,然後去引入需要的檔案。
route.php
**如下:
<?php
namespace
core;
class
route
}
現在我們訪問入口檔案index.php,會呼叫imooc::run
方法,預期瀏覽器會輸出:
至此,專案結構如圖:
從零開始打造自己的php框架
為了更快的開發效率 為了更高的執行效率 為了更好地證明自己 裝x 能夠熟練地使用使用php 較為深刻的理解物件導向和mvc概念 較強的邏輯能力和動手能力 目的 通過位址列的引數來找到對應的控制器和方法 本質 隱藏index.php 獲取url 引數部分 返回對應的控制器和方法 url多餘部分轉換成 ...
從零開始打造自己的PHP框架 第5章
使用medoo外掛程式來連線和運算元據庫。1 在composer中新增依賴 catfan medoo 2 更新依賴 composer update 1 config目錄新增medoo config.php為 return array database type mysql database name...
從零開始編寫自己的C 框架(1) 前言
記得十五年前自學程式設計時,拿著c語言厚厚的書,想要上機都不知道要用什麼編譯器來執行書中的例子。十二年前在大學自學asp時,由於身邊沒有一位同學和朋友學習這種語言,也只能整天混在圖收館裡拼命的啃書。而再後來也差不多,自學了很多不同的知識,都一直只能自己默默的克服乙個又乙個困難。所以這幾年帶一些應屆生...