套件

當談論到組織、重用及分享你的程式碼,套件是能讓你達成的好方法。 它們可以包含所有種類像模型、第三方函式庫、配置等。 套件也能讓你擴充核心而不搞亂你的 app/classes 目錄。 要澄清套件是什麼,以下有套件的「是」與「否」。

套件……

但……

安裝套件

安裝套件可以手動或透過 oil。要手動安裝可下載套件並放進你的套件目錄(預設在 fuel/packages)。

要真正能夠使用你的套件,你必須將其添加到 app/config/config.php 裡的 always_load 或使用 Package::load()

建立套件

為了幫助人們了解你在做什麼,最好建構你的套件像這樣:

/packages
    /package
        /bootstrap.php
        /classes
            /your.php
            /classes.php
            /here.php
        /config
            /packageconfig.php
        /and_so_on

每個套件都預期有一個 bootstrap.php 位於套件的基底。 使用引導程序去添加命名空間(添加至全域,如果你願意)。並且為了較好的效能添加類別。

// 添加命名空間,如果你想要自動載入器能找到類別
Autoloader::add_namespace('Mypackage', __DIR__.'/classes/');

// 添加為核心命名空間
Autoloader::add_core_namespace('Mypackage');

// 添加為核心命名空間(類別是對全域的別名,因此無須命名空間前綴便可使用)
// 設定第二個參數為 true 成為前綴,且能覆寫核心類別
Autoloader::add_core_namespace('Mypackage', true);

// 然後添加類別,這是有用的:
// - 優化:不需要搜尋路徑
// - 它必須是能夠使用為核心的命名空間
// - 如果你想打破自動載入器的路徑搜索規則
Autoloader::add_classes(array(
	'Mypackage\\Classname' => __DIR__.'/classes/classname.php',
	'Mypackage\\Anotherclass' => __DIR__.'/classes/anotherclass.php',
));

一旦你將你的類別放至定位,你現在可以開始使用它們。

請注意:如果套件命名空間不是對全域的別名,你必須提供它:

// 如果是對全域的別名,直接使用
$instance = new Myclass;

// 當不是對全域的別名時
$instance = new Mynamespace\Myclass;