yii2中的别名

别名(Alias)
可以将别名视为特殊的常量变量。ii中、别名以@别名的定义一般放在应用的最开始的阶段进行,比如引导阶段、初始化阶段等开头,以区别于正常的文件路径和URL。
一、预定义别名
yii\BaseYii::$aliases 用于保存整个Yii应用的所有的别名。

var_dump(yii\BaseYii::$aliases);die;打印所有别名,等价于如下:

use Yii;
var_dump(Yii::$aliases);die;
{
	@yii: {
		@yii/swiftmailer: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-swiftmailer",
		@yii/redis: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-redis/src",
		@yii/queue/sync: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/sync",
		@yii/queue/sqs: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/sqs",
		@yii/queue/redis: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/redis",
		@yii/queue/gearman: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/gearman",
		@yii/queue/file: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/file",
		@yii/queue/db: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/db",
		@yii/queue/beanstalk: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/beanstalk",
		@yii/queue/amqp_interop: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/amqp_interop",
		@yii/queue/amqp: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src/drivers/amqp",
		@yii/queue: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-queue/src",
		@yii/httpclient: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-httpclient/src",
		@yii/gii: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-gii/src",
		@yii/faker: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-faker",
		@yii/debug: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-debug/src",
		@yii/bootstrap: "/Users/xiafen/web/organa/vendor/yiisoft/yii2-bootstrap/src",
		@yii: "/Users/xiafen/web/organa/vendor/yiisoft/yii2"
	},
	@app: "/Users/xiafen/web/organa",
	@vendor: "/Users/xiafen/web/organa/vendor",
	@bower: "/Users/xiafen/web/organa/vendor/bower-asset",
	@npm: "/Users/xiafen/web/organa/vendor/npm-asset",
	@runtime: "/data0/www/cache/organa.intra.lianjia.com",
	@privdata: "/data0/www/privdata/organa.intra.lianjia.com",
	@webroot: "/Users/xiafen/web/organa/web",
	@web: "",
	@m35: {
		@m35/thecsv: "/Users/xiafen/web/organa/vendor/m35/thecsv"
	},
	@yii2tech: {
		@yii2tech/spreadsheet: "/Users/xiafen/web/organa/vendor/yii2tech/spreadsheet/src"
	}
} 


所有预定义的别名:
默认预定义别名一共有12个,其中路径别名11个,URL别名只有 @web 1个:
@yii 表示Yii框架所在的目录,也是 yii\BaseYii 类文件所在的位置;
@app 表示正在运行的应用的根目录,一般是 digpage.com/frontend ;
@vendor 表示Composer第三方库所在目录,一般是 @app/vendor 或 @app/../vendor ;
@bower 表示Bower第三方库所在目录,一般是 @vendor/bower ;
@npm 表示NPM第三方库所在目录,一般是 @vendor/npm ;
@runtime 表示正在运行的应用的运行时用于存放运行时文件的目录,一般是 @app/runtime ;
@webroot 表示正在运行的应用的入口文件 index.php 所在的目录,一般是 @app/web;
@web URL别名,表示当前应用的根URL,主要用于前端;
@common 表示通用文件夹;
@frontend 表示前台应用所在的文件夹;
@backend 表示后台应用所在的文件夹;
@console 表示命令行应用所在的文件夹;
其他使用Composer安装的Yii扩展注册的二级别名。

这样,在整个Yii应用中,只要使用上述别名,就可方便、且统一地表示特定的路径或URL。


二、预定义别名的分布

预定义别名在vendor里定义

自定义别名一般放在config/下的某个配置文件当中定义

return array(
	......
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
        '@privdata' => env('MATRIX_PRIVDATA_DIR', '@runtime/privdata/'),
    ],
    ......
);

(1)配置文件的别名

别名一般放在 digpage.com\common\config\bootstrap.php , 或者 digpage.com\frontend\config\bootstrap.php 等 bootstrap.php 文件中定义,也可以自己在 bootstrap.php 中加入自己的别名定义

Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console');

 

(2)Yii预定义的别名
主要分布在 yii\BaseYii 和 yii\base\Application 等类中。这类别名直接写到Yii的代码中去,一般不去修改他。
如:在yii\BaseYii 中:
// 定义@yii作为yii\BaseYii.php的别名
public static $aliases = ['@yii' => __DIR__];
又如:yii\base\Application 在其构造函数 __construct()中

(3)扩展中的别名
Yii的扩展(extensions)。 当使用Composer安装扩展后,会向 @vendor/yiisoft/extensions.php 写入信息,其中就包含相应的别名。 只不过这些别名通常都是二级别名。然后,在 yii\base\Application::bootstrap() 中,将这些扩展的别名进行注册。



三、别名的定义与解析

(1)定义和解析别名

Yii使用 Yii::$aliases[] 来保存别名, 定义别名就是将别名及其代表的实际路径或URL写入这个数组, 而解析别名就是将别名的信息从数组读取出去并组合。
(2)别名的定义过程

// 使用一个路径定义一个路径别名
Yii::setAlias('@foo', 'path/to/foo');
// 使用一个URL定义一个URL别名
Yii::setAlias('@bar', 'http://www.example.com');
// 使用一个别名定义另一个别名
Yii::setAlias('@fooqux', '@foo/qux');
// 定义一个“二级”别名
Yii::setAlias('@foo/bar', 'path/to/foo/bar');















































 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值