從零開始打造自己的框架 類的自動載入

2021-07-25 15:01:22 字數 1788 閱讀 7417

接下來我們希望完成乙個「自動載入類」的動能,我們把這個功能放到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時,由於身邊沒有一位同學和朋友學習這種語言,也只能整天混在圖收館裡拼命的啃書。而再後來也差不多,自學了很多不同的知識,都一直只能自己默默的克服乙個又乙個困難。所以這幾年帶一些應屆生...