套件

當談論到組織、重用及分享你的程式码,套件是能让你達成的好方法。 它們可以包含所有種类像模型、第三方函式庫、配置等。 套件也能让你擴充核心而不搞亂你的 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;