类別

类別是什么?

类別就是普通的 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();