自動載入與模組 - 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 {
// 程式內容
}