欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Yaf学习记录(二)命名空间

程序员文章站 2024-03-24 23:18:28
...

在前一个yaf学习记录笔记中记录了yaf的基本搭建,当时在php.ini中开启了命名空间的配置项,在本次笔记中将记录如何在命名空间配置项关闭的情况下搭建框架系统,并讲述一些基本的application.ini的配置变量作用。

1、关闭命名空间

;添加yaf扩展
extension=php_yaf.dll

;设置自动加载机制
yaf.use_spl_autoload=1 

;启用命名空间
yaf.use_namespace=0

设置之后,扩展类的引入变化如下:

//变化前(使用命名空间)
use Yaf\Bootstrap_Abstract;
use Yaf\Dispatcher;

//变化后(命名空间关闭)
Yaf_Bootstrap_Abstract
Yaf_Dispatcher

后者无需引入,直接作为类型使用即可。前提是在index.php中进行yaf应用的启动:

$app = new Yaf_Application(APP_PATH . "/conf/application.ini", 'personal');

$app->bootstrap()->run();

2、设定命名空间

当我们把命名空间的配置项关闭后,系统将无法使用命名空间的功能,应用也只能访问到模块里面的PHP类文件。但我们可以通过代码的形式实现命名空间,如下:bootstrap.php文件

/**
 * @Desc: 设置默认的命名空间:/app/library/Base/Base_XXX.php表示使用Base命名空间
 * @DateTime: 2018-10-20 18:14
 */
public function _initCommonFunction()
{
    //使用默认的命名空间
    Yaf_Loader::getInstance()->registerLocalNameSpace('Base');
}

我们手动注册了Base这个命名空间。该命名空间下的文件有目录和命名限制。

目录必须是我们设定的library目录下的Base文件夹中,其中library目录可以人为在application.ini中进行给定,一般在App目录下。

命名的话,对应的类名为Base_XXX,其中文件名为XXX.php.

例如:创建一个基类,使用Base命名空间

// 存放的目录:/app/libs/Base/Personal.php

//基类命名规范
class  Base_Personal extends Yaf_Controller_Abstract
{
}

必须一一对应,否则在controller中引入将提示找不到该类。使用方式:

class IndexController extends Base_Personal
{
}

在控制器中直接继承该基类即可。

3、补充一个application.ini的配置说明

在配置变量中,我们可以看到类似以下的配置内容:

[common]
XXX = XXX

[personal : common]
XXX = XXX

这个配置的意思是personal的配置变量继承common的配置变量,common可以理解为公共的配置内容。当我们的项目使用的是personal模块时,我们需要在index.php中声明,声明如下:

$app = new Yaf_Application(APP_PATH . "/conf/application.ini", 'personal');

第二个参数就是将要使用的配置内容名称,可自行体验。

以上是本笔记的全部内容。