扫码关注官方订阅号
CodeIgniter文档里好像没有namespace的部分。PS:如何在CodeIgniter里使用composer加载的库。
ringa_lee
CI3就开始支持命名空间了。如果你想使用Composer可以在config/config.php文件中的$config['composer_autoload'] = TRUE;这个选项修改为TRUE,默认是FALSE
Composer
config/config.php
$config['composer_autoload'] = TRUE;
这里注意一下。如果你修改为TRUE,那么CI是自动去加载application/vendor/autoload.php所以,如果你的vendor目录在你的项目根目录下,即与index.php同级,那么你可以使用$config['composer_autoload'] = realpath(APPPATH . '../vendor/autoload.php');这样的方式来引入Composer
application/vendor/autoload.php
vendor
index.php
$config['composer_autoload'] = realpath(APPPATH . '../vendor/autoload.php');
没有namespace意味着CI框架不能使用命名空间。但是你自己代码可以使用。如果想用composer,可以在要使用composer库的地方加上
require __DIR__.'/vendor/autoload.php'; ...
路径记得自己调一下
php版本大于5.3就支持命名空间, 跟框架没关系的.只需要在类定义之前使用use关键字
use
//use 你的composer包的完全限定名 use Monolog\Logger; use Monolog\Handler\StreamHandler; class TestController { }
可以参考下https://github.com/sinoci/sinoci
我赞了一下 @柚子男 的答案,耐心看了一下这个项目,会发现除了使用 composer 自动加载 vendor 目录下的第三方类库外,还可以自定义命名空间,加载自定义类。核心内容是修改composer.json加入这段配置项
composer.json
"autoload": { "psr-4": { "onecho\\": "application/onecho/" } }
"onecho\\": "application/onecho/"为你的跟命名空间以及对应的目录。如有文件application/onecho/controllers/Base.php
"onecho\\": "application/onecho/"
application/onecho/controllers/Base.php
<?php namespace onecho\controllers; class Base{ } ?>
在另一文件中即可用onecho\controllers\Base找到这个类。
onecho\controllers\Base
另外有一点, @柚子男 跟我不谋而合,将CI框架以composer包的形式引入,而不是按照CI文档上所说的解压CI的整个压缩包。这样的话,CI框架的内容就可以不用纳入版本控制器了。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
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库的地方加上
路径记得自己调一下
php版本大于5.3就支持命名空间, 跟框架没关系的.
只需要在类定义之前使用
use关键字可以参考下
https://github.com/sinoci/sinoci
我赞了一下 @柚子男 的答案,耐心看了一下这个项目,会发现除了使用 composer 自动加载 vendor 目录下的第三方类库外,还可以自定义命名空间,加载自定义类。
核心内容是修改
composer.json加入这段配置项"onecho\\": "application/onecho/"为你的跟命名空间以及对应的目录。如有文件
application/onecho/controllers/Base.php在另一文件中即可用
onecho\controllers\Base找到这个类。另外有一点, @柚子男 跟我不谋而合,将CI框架以composer包的形式引入,而不是按照CI文档上所说的解压CI的整个压缩包。这样的话,CI框架的内容就可以不用纳入版本控制器了。