套件 - 一般
优质
小牛编辑
129浏览
2023-12-01
当谈论到组织、重用及分享你的程式码,套件是能让你达成的好方法。 它们可以包含所有种类像模型、第三方函式库、配置等。 套件也能让你扩充核心而不搞乱你的 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;