当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

套件 - 一般

优质
小牛编辑
134浏览
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;