自動載入與模組 - kouji6309/SingleMVC GitHub Wiki
自動載入
SingleMVC 開始執行時,會載入 3rd 、 helper 中所有的檔案,但不包含子資料夾的檔案。
當要建立物件的類別尚未載入時,會觸發自動載入機制。自動載入分兩部分,一是載入 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 {
// 程式內容
}