包(Packages)
包与代码重用中的模块类似,但在以下方面有所不同,
- 它不会映射到Web URL
- 通过HMVC请求无法接近
简而言之,包不是直接的Web功能,如博客,专辑等。相反,它是一个功能组合在一起的功能库,如电子邮件处理,文档创建,图表创建,身份验证等,这有助于更快地开发Web应用。
创建包
要创建包,首先我们需要安排如下指定的源代码。
/fuel
/packages
/package (root directory of package)
/bootstrap.php
/classes
/our.php
/classes.php
/here.php
/config
/config.php
/and_so_on
该包的结构有两个特定于包的文件,config.php和bootstrap.php文件。 配置文件的目的是将包的配置分组到包文件夹本身,而不会干扰主应用程序。 引导程序文件的目的是设置名称空间,以便自动加载程序正确加载它。
设置命名空间的一些方法如下,
Autoloader::add_namespace('Mypackage', __DIR__.'/classes/');
Autoloader::add_core_namespace('Mypackage');
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;
安装包
包通常放在fuel/packages目录下。 默认情况下,安装以下软件包,
auth - 身份验证包
email - 电子邮件包
oil - 燃料指令,石油包装
orm - ORM包
parser - Markdown解析器包
要安装新软件包,以下是两个选项,
Option 1 - 手动安装 - 下载并安装
要手动安装软件包,请首先从作者的网站下载软件包。 打开fuel/packages/并将其放在fuel/packages/文件夹下。
Option 2 - 使用油指令的自动方法
FuelPHP提供了一种自动安装github托管软件包的方法。 使用以下命令安装包mytestpackage。
php oil package install mytestpackage
它使用git客户端克隆包源代码并将其移动到fuel/packages文件夹。 如果git客户端不可用,那么我们可以使用-direct命令参数指示命令下载并安装软件包,如下所示。
php oil package install mytestpackage --direct
使用包
一旦将应用程序加载到应用程序中,就可以在应用程序中使用它们。 有两种方法可以将包加载到应用程序中。
Option 1 - 通过Package类
FuelPHP提供了一个类, Package ,分别通过加载,卸载和加载方法来加载,卸载和检查包的可用性。 load方法有两个参数。 第一个参数, $package是$package的名称和第二个参数, path是包的路径。 如果包安装在fuel/packages文件夹中,则第二个参数是可选的。
// load the orm package
Package::load('orm');
// load the parser package from a specific directory
Package::load('parser', '/path/to/packages/dir/');
// load the non-existent package
Package::load('awesome'); // Throws a PackageNotFoundException
Option 2 - 通过配置文件
要永久加载包,只需在主配置文件fuel/app/config/config.php中的always_load配置条目下添加包。 要加载电子邮件包,请使用以下语法。
'always_load' => array (
'packages' => array (
'email',
),
),
将包加载到应用程序后,我们可以按如下方式使用它。
$instance = new Myclass;
$instance = new Mynamespace\Myclass;