无法加载自定义的命名空间类问题??? [ 2.0 版本 ]
使用了高级版, web站点目录为frontend里的web目录
common
|__ config
|-- bootstrap.php //这里定义了别名路径 util
backend
frontend
util // 这个是新添加的类库
|____ image //目录
|__ driver //目录
|__ Gd.php //驱动文件
|__ Image.php
common/config/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');
Yii::setAlias('util', dirname(dirname(__DIR__)) . '/util'); //新添加的一行
在frontend/controllers/siteController.php 里的 actionImg 方法里调用
$image = new uitl\image\Image();
总是失败。使用
echo Yii::getAlias('@util/image/Image.php');
查看,路径是没有问题的。
使用的是 Yii自动加载器 http://www.yiichina.com/doc/guide/2.0/concept-autoloading
已经解决,以下方法。以前可能测试的有误
$image = new \uitl\image\Image();
最佳答案
其他 3 个回答
-
在高级应用模版里,每一逻辑层级会使用他自己的根别名。比如,前端层会使用 @frontend 而后端层会使用 @backend。因此,你可以把前端的类放在 frontend 命名空间,而后端的类放在 backend。 这样这些类就可以被 Yii 自动加载了。
你这种没有autoload的要放到应用下面,光定义别名是不行的,没有加载进去
共 1 条回复 -
失败是指?找不到路径?还是说你的image()函数报错?
共 8 条回复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'); Yii::setAlias('util', dirname(dirname(DIR)) . '/util'); //新添加的一行
这个是别名配置在公共的 common/config/bootstrap.php文件里,和frontend、backend平级的,不对吗?
cfanbo
注册时间:2015-05-23
最后登录:2015-09-10
在线时长:11小时52分
最后登录:2015-09-10
在线时长:11小时52分
- 粉丝2
- 金钱110
- 威望0
- 积分220