php 获取路径别名,三、应用基础目录basePath、路径别名aliases与类的导入Yii::import()...

我们接着看CWebApplication的构造函数(下文中将CWebApplication简称webapp)

public function __construct($config=null)

{

//将创建的webapp实例赋值给Yii的静态属性$app,在整个进程中可以使用Yii::app()来使用这个应用对象,这是一个单例模式

Yii::setApplication($this);

//在赋值app应用对象之后,webapp应用对象导入$config指向的配置文件路径,并将配置文件中返回的数组赋值给$config变量

if(is_string($config))

$config=require($config);

//如果我们在此处打印$config,你会发现,打印出来的数组就是protected/config/main.php里的数组

//我们可以看到,$config数组中basePath对应的值是个路径,指向的是protected目录,这个目录就是基础应用目录,setBasePath方法

是将basePath的值赋值给webapp的私有变量$_basePath,在网页的任何地方,我们都可以使用Yii::app()->basePath来调用获取该路径

if(isset($config['basePath']))

{

$this->setBasePath($config['basePath']);

unset($config['basePath']);

}

else

$this->setBasePath('protected');

//设置application,webroot,ext三个路径别名,路径别名顾名思义是对某一个路径的简称,详见下文setPathOfAlias方法

Yii::setPathOfAlias('application',$this->getBasePath());

Yii::setPathOfAlias('webroot',dirname($_SERVER['SCRIPT_FILENAME']));

if(isset($config['extensionPath']))

{

$this->setExtensionPath($config['extensionPath']);

unset($config['extensionPath']);

}

else

Yii::setPathOfAlias('ext',$this->getBasePath().DIRECTORY_SEPARATOR.'extensions');

//如果配置文件中有自定义路径别名aliases,则设置相应的路径别名

if(isset($config['aliases']))

{

$this->setAliases($config['aliases']);

unset($config['aliases']);

}

}

方法 Yii::setPathOfAlias ,实际上是用webapp用一个私有的静态属性$_aliases的一个数组来管理路径别名,在页面的任何地方你都可以使用Yii

:

:getPathOfAlias来获取路径别名对应的全路径,路径别名结合Yii::import()方法导入一个类是YII中常用的导入类方式,你可以通过Yii

:

:import(

'alias.path.to.ClassName'),使用路径别名来导入一个类,比如Yii::import('application.controllers.SiteController')表示导入SiteController类,Yii::import('application.controllers.*')则表示导入controllers目录下面的所有类,Yii::import()只会在第一次使用该类时导入,而且比requre_once和Include_once更高效;

public static function setPathOfAlias($alias,$path)

{

if(empty($path))

unset(self::$_aliases[$alias]);

else

self::$_aliases[$alias]=rtrim($path,'\\/');

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值