套件
當談論到組織、重用及分享你的程式码,套件是能让你達成的好方法。 它們可以包含所有種类像模型、第三方函式庫、配置等。 套件也能让你擴充核心而不搞亂你的 app/classes 目录。 要澄清套件是什么,以下有套件的「是」與「否」。
套件……
- 是組織你程式码的好方法,
- 提供一个儲存第三方函式庫的地方,
- 能让你擴充其他套件而不與別人的程式码搞亂,
- 一个擴充 Fuel 而不搞亂核心文件的地方。
但……
- 套件并不對應到 URL,
- 且透過 HMVC 請求是不易接近的。
安装套件
安装套件可以手动或透過 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;