类別
类別是什么?
类別就是普通的 PHP 类別。它不需要擴充任何東西,或依循除了命名慣例的任何慣例,Fuel 內的所有其他类別也相同。
class Session
将載入 app/classes/session.php。
載入类別
不像一些其他框架,类別不需要手动載入。當你在程式码(控制器、模型等)中引用它們,它們将会自动載入。
子目录中的类別
就像 控制器,类別必須是小寫且第一个字母大寫,同時底線将置类別於子目录。
Class Session_Driver
将載入 app/classes/session/driver.php
类別與命名空間
为了確定要讀哪个 PHP 档案,FuelPHP 的自动載入器将把命名空間與使用底線的类別名稱視为完全相同。
这意味著在子目录裡的类別,你可以混搭命名空間與底線來符合你的需求。
例如有一个类別在 app/classes/core/system/messages.php 档案裡,此类別可以被定義为:
// 全域的命名空間,完全底線的类別名稱
class Core_System_Messages {}
// 結合一个命名空間與底線
namespace Core;
class System_Messages {}
// 或完全的命名空間
namespace Core\System;
class Messages {}
第一種方法是最常用且最容易理解的,如果你結合 Use 聲明使用已定義的类別,
命名空間的版本是特別方便的。
初始化你的类別
类別被載入時,让 Fuel 的自动載入器實施某些自动的任務是可能的,
有點像类別的實例 __construct()
所做的。
你可以透過添加一个公開的靜態 _init()
方法到类別達成。
class Example {
public static function _init()
{
// 緊接在載入类別後被呼叫
}
}
如果一个被載入的类別有它自己的 _init()
方法及父層,必須跟著被載入,
父層的初始化方法不会被呼叫,除非你使用
parent::_init();