php - CodeIgniter可以使用命名空间么
ringa_lee
ringa_lee 2017-04-11 10:36:23
[PHP讨论组]

CodeIgniter文档里好像没有namespace的部分。
PS:如何在CodeIgniter里使用composer加载的库。

ringa_lee
ringa_lee

ringa_lee

全部回复(5)
大家讲道理

CI3就开始支持命名空间了。
如果你想使用Composer可以在config/config.php文件中的$config['composer_autoload'] = TRUE;这个选项修改为TRUE,默认是FALSE

这里注意一下。如果你修改为TRUE,那么CI是自动去加载application/vendor/autoload.php所以,如果你的vendor目录在你的项目根目录下,即与index.php同级,那么你可以使用$config['composer_autoload'] = realpath(APPPATH . '../vendor/autoload.php');这样的方式来引入Composer

伊谢尔伦

没有namespace意味着CI框架不能使用命名空间。
但是你自己代码可以使用。
如果想用composer,可以在要使用composer库的地方加上

require __DIR__.'/vendor/autoload.php';
...

路径记得自己调一下

巴扎黑

php版本大于5.3就支持命名空间, 跟框架没关系的.
只需要在类定义之前使用use关键字

//use 你的composer包的完全限定名

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

class TestController {
    
}
黄舟

可以参考下
https://github.com/sinoci/sinoci

阿神

我赞了一下 @柚子男 的答案,耐心看了一下这个项目,会发现除了使用 composer 自动加载 vendor 目录下的第三方类库外,还可以自定义命名空间,加载自定义类。
核心内容是修改composer.json加入这段配置项

    "autoload": {
      "psr-4": {
        "onecho\\": "application/onecho/"
      }
    }

"onecho\\": "application/onecho/"为你的跟命名空间以及对应的目录。
如有文件application/onecho/controllers/Base.php

<?php
namespace onecho\controllers;
class Base{
}
?>

在另一文件中即可用onecho\controllers\Base找到这个类。

另外有一点, @柚子男 跟我不谋而合,将CI框架以composer包的形式引入,而不是按照CI文档上所说的解压CI的整个压缩包。这样的话,CI框架的内容就可以不用纳入版本控制器了。

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

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