PHP 项目中,通过 Composer 来管理各种依赖包,类似 Java 中的 Maven,或 Node 中的 npm。CodeIgniter 框架要想通过 Composer 自动加载包也很简单,步骤如下:
1. 安装 Composer
安装后,记得设置仓库源为国内镜像,否则下载速度太慢。
2. 安装 CodeIgniter
假设项目名为 test,切换到合适目录后,执行命令:
composer create-project codeigniter/framework test
在当前目录下会创建 test 目录,CodeIgniter 项目安装到这个 test 目录下。
3. 安装依赖包
切换到项目根目录,通过 composer require
命令安装所需包:
D:lihongfengworkspace est> composer require lcobucci/jwt
Using version ^3.2 for lcobucci/jwt
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing phpunit/phpunit (5.7.27): Loading from cache
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating autoload files
安装后,Composer 会在当前目录中创建 vendor 目录及 composer.lock
文件:
D:lihongfengworkspacejwt> tree .
文件夹 PATH 列表
卷序列号为 00000028 B233:DAE9
D:LIHONGFENGWORKSPACEJWT
│ .editorconfig
│ .gitignore
│ composer.json
│ composer.lock
│ contributing.md
│ index.php
│ license.txt
│ readme.rst
├─.idea
├─application
├─system
└─vendor
其中 vendor 目录结构如下
├─bin
├─composer
├─doctrine
├─lcobucci
│ └─jwt
├─myclabs
│ └─deep-copy
│ ├─doc
│ └─src
│ └─DeepCopy
│ ├─Exception
│ ├─Filter
│ │ └─Doctrine
│ ├─Matcher
│ │ └─Doctrine
│ ├─Reflection
│ ├─TypeFilter
│ │ ├─Date
│ │ └─Spl
│ └─TypeMatcher
├─phpdocumentor
...
4. 设置 CodeIgniter
要想使用 Composer,需要修改 application/config/config.php
:
$config['composer_autoload'] = 'vendor/autoload.php';
官方建议将 vendor 目录放在 application 目录中,项目迁移时复制整个 application 目录即可,比较方便。这时可以直接将上面的选项设置为 TRUE,CodeIgniter 框架会使用 application/vendor/autoload.php
这个默认路径。
但我们刚才通过 Composer 命令将依赖包安装在了项目根目录下,所以要自行填入路径 vendor/autoload.php
。
5. 测试能否自动加载安装的包
参考每个包的文档,写几个测试方法即可。