php - Yii2新增目录如何配置自动加载
怪我咯
怪我咯 2017-04-11 09:19:50
[PHP讨论组]

目录结构类似这样的:
/

frontend/
common/
backend/
helpers/
    Foo.php
vendor/

我在项目根目录新建了个目录helpers,里面建立了个类文件Foo.php,namespace helpers;
但是在use helpers\Foo;的时候,提示helpers\Foo没有找到。
请问这是什么原因呢?是不是Yii和autoload没有把一级目录加进自动加载里面?
要怎么解决这个问题?

目前我是把helpers放到common里面

@光灵小鼠 @八宝粥 helpers放一级目录这种设计确实不好,多谢指点。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(8)
PHP中文网

两种途径:

  1. 利用yii2本身的方法,即上面有人提到的setAlias

  2. 利用composer, 然后不要忘记composer dump-autoload

"psr-4": {
    "helpers\\": "helpers/"
}
PHP中文网

我也没看到helpersFoo在哪
格式如下

namespace helpers 
use userCenter\regist;
天蓬老师

在common/config/bootstrap.php文件内配置:

<?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('helpers', dirname(dirname(__DIR__)) . '/helpers');
高洛峰

这种是要配置的。
根目录下小写开头的目录都需要特别的设置,也就是说helpers, frontend, common这些和命名空间不是直接对应的,但是它们之下的文件是对应的。自己看一下文档就了解了。

ringa_lee

setAlias()

迷茫

如果没记错,Yii2 也是利用 composer 实现 psr-4 映射,可参阅 composer 文档。

迷茫

你用的是Yii2 advanced模版
这个模版有三个应用
backend 代表后台应用
console 代表控制器应用
frontend 代表前台应用
common 存放三个应用公用的类

= = 你在根目录增加helper?表示你要增加一个helper应用?

在common下面增加一个helper文件夹还差不多

PHP中文网

@__FresHmaN 讲的不错。

但是我不建议你放在根目录,建议你放在 common 里面

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号