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:\lihongfeng\workspace\test> 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:\lihongfeng\workspace\jwt> tree .
文件夹 PATH 列表
卷序列号为 00000028 B233:DAE9
D:\LIHONGFENG\WORKSPACE\JWT
│ .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. 测试能否自动加载安装的包

参考每个包的文档,写几个测试方法即可。

CodeIgniter 技巧 - 通过 Composer 安装 CodeIgniter 框架并安装依赖包的更多相关文章

  1. 怎么安装Scrapy框架以及安装时出现的一系列错误(win7 64位 python3 pycharm)

    因为要学习爬虫,就打算安装Scrapy框架,以下是我安装该模块的步骤,适合于刚入门的小白: 一.打开pycharm,依次点击File---->setting---->Project---- ...

  2. 编译安装php 5.5 缺少依赖包 及解决方案

    必要时可以用 YUM 选择安装以下相关软件包: #yum install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel ...

  3. SAE 安装未包含的第三方依赖包

    如何使用virtualenv管理依赖关系 当你的应用依赖很多第三方包时,可以使用virtualenv来管理并导出这些依赖包,流程如下: 首先,创建一个全新的Python虚拟环境目录ENV,启动虚拟环境 ...

  4. linux:apt-get 如何安装,查询,解除依赖包

    apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package ...

  5. ubuntu18.04 下 使用conda安装requirement.txt指定的依赖包

    首先创建特定的虚拟环境 conda create -n temp_test python=3.5 conda install anaconda 切换到该环境 conda activate temp_t ...

  6. linux中用composer安装yii框架

    我的服务器是安装的是lanmp环境 如果环境版本比较低的话,建议升级一下版本 升级版本命令:./lanmp.sh cus 全都选择最高的.完成之后: curl -sS https://getcompo ...

  7. salt源码安装软件和yum安装软件

    上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...

  8. Android 源码编译环境搭建(64位Ubuntu)各种依赖包安装

    1.准备: 普通PC(要求能上网), PC的操作系统Ubuntu 10.04 LTS(64位的),已经下载好的Android 1.6_r1的源代码. 2.Linux的依赖package安装: 为了更快 ...

  9. pip离线安装依赖包

    pip安装离线本地包 导出本地已有的依赖包 pip freeze > requirements.txt 将依赖包下载到本地 # 下载到当前目录,指定pip源 pip download -r re ...

随机推荐

  1. 总结:String类型与Int类型的转换【实现插入操作主键自增】

    1.String类型(此类型是数字格式的字符串类型)转换成Int类型 String str = "10000"; 转换成Int类型: int num = Integer.parse ...

  2. C#Exception 追踪异常位置

    1:在编写软件时,保护关键位置的代码正常运行,要对这位置进行异常处理try catch private void StartTCPServer() { try { ........//我们要确保知道这 ...

  3. Java数据结构之队列(Queue)

    1.使用场景 银行排队的案例: 2.队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则: 先存入队列的数据,要先取出. 后存入的要后取出 示意图:(使用数组模拟队列示意图) ...

  4. Good number(3进制)

    https://codeforces.com/problemset/problem/1249/C2 C2. Good Numbers (hard version) time limit per tes ...

  5. Codeforces 515C 题解(贪心+数论)(思维题)

    题面 传送门:http://codeforces.com/problemset/problem/515/C Drazil is playing a math game with Varda. Let’ ...

  6. C# 判断文件夹与文件是否存在

    //在上传文件时经常要判断文件夹是否存在,如果存在就上传文件,否则新建文件夹再上传文件 判断语句为 if (System.IO.Directory.Exists(Server.MapPath(&quo ...

  7. addEventListener 的三个参数

    addEventListener 有三个参数:第一个参数表示事件名称(不含 on,如 "click"):第二个参数表示要接收事件处理的函数:第三个参数为 useCapture,本文 ...

  8. C++ 数组动态分配

    数组的动态内存分配 #include <iostream> //一维数组 void oneDimensionalArray() { //定义一个长度为10的数组 int* array = ...

  9. es6 promise 结束回调地狱

    promise的三种状态: pending---进行中 fulfiled---执行成功 rejected---执行失败 var promise = new Promise(function(resol ...

  10. JavaScript高级笔记

    # 今日内容:     1. JavaScript:         1. ECMAScript:         2. BOM:         3. DOM:             1. 事件 ...