自動載入與模組 - kouji6309/SingleMVC GitHub Wiki

自動載入

SingleMVC 開始執行時,會載入 3rdhelper 中所有的檔案,但不包含子資料夾的檔案。

當要建立物件的類別尚未載入時,會觸發自動載入機制。自動載入分兩部分,一是載入 source 中的檔案,另一個是載入 vendor (Composer 目錄) 的 aoutload.php。依照載入器註冊順序,框架會優先搜尋 source 的檔案。

載入 source 的檔案,會先找 models 的內容,並優先搜尋符合 PSR-4 的路徑,若沒有則找符合類別名稱的檔案。若在 models 中沒找到,則在 controllers 中重複一次搜尋。

使用 Composer 時,目錄結構參考 這裡。若網站 ROOT 目錄存在 composer.json 但不存在 /vendor/autoload.php,框架會暫停處理原請求,並顯示 Composer 安裝畫面,此時將會呼叫 SingleMVC::composer_update 執行安裝/更新,完成後重新處理原請求;若無法成功更新,則需自行上傳 vendor 資料夾。

模組

模組的類別名稱與檔名需相同,例如 News 類別的檔名即為 News.php。若需要使用 SingleMVC 提供的功能與資料庫,可以繼承 Model 類別。

<?php
class News extends Model {
    // 程式內容
}

使用命名空間可以組織檔案並減少類別名稱衝突,這時可以使用 PSR-4 命名規則,將命名空間轉換成資料夾路徑,例如 \My\Utility\Logger 類別將會對應到 models/My/Utility/Logger.php 檔案。若使用命名空間且需要繼承框架的 Model 類別,記得加上 \ 指向全域命名空間。

<?php
namespace My\Utility;

class Logger extends \Model {
    // 程式內容
}

SingleMVC 提供的 Model 包含了資料庫cURL密碼函數,詳細功能請看這裡