使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组件

环境:Windows 10 64位
PHP 版本:5.5.12
框架:ThinkPHP 3.2.3

Tips:

组件:打包的代码,可以是一系列相关的类(class)、接口(interface)、特性(trait),用于解决某个具体的问题。组件中的类、接口、特性通常放在同一个命名空间中。

Packagist:https://packagist.org/,该网站收集 PHP 组件,可以在上面查找项目中需要的组件。ThinkPHP 在该站的地址为:https://packagist.org/packages/topthink/thinkphp

Composer:Composer 是 PHP 组件的依赖管理器,在命令行中运行,通过运行命令可以下载组件(以及组件的依赖)并且把组件(以及组件的依赖)自动加载到项目中。

安装 Composer

Composer 官网地址:https://getcomposer.org/,中文镜像地址:http://www.phpcomposer.com/

Windows 版下载地址:https://getcomposer.org/download/

下载安装包并安装:

如果安装不成功且提示:

The openssl extension is missing, which will reduce the security and stability of Composer. If possible you should enable it or recompile php with --with-openssl

则需要将 php.ini 中 extension=php_openssl.dll 前面的注释取消。

当安装成功后,程序会自动关把安装路径添加到系统的环境变量,打开环境变量可以看到:

因此在 cmd 命令提示符下可以直接执行 composer 命令:

如果看到这个画面则说明安装成功了。

准备框架

测试使用 ThinkPHP(3.2.3) 框架(也可以使用 Laravel、Yii 等其他现代框架)。初始化的框架根目录中,有一个 composer.json 文件:

{"name": "topthink/thinkphp","description": "the ThinkPHP Framework","type": "framework","keywords": ["framework","thinkphp","ORM"],"homepage": "http://thinkphp.cn/","license": "Apache2","authors": [{"name": "liu21st","email": "liu21st@gmail.com"}],"require": {"php": ">=5.3.0"},"minimum-stability": "dev"
}

PHP 组件中必须要有 composer.json 文件。Composer 会使用该文件中的信息查找、安装和自动加载 PHP 组件。

其中:

name 表示该组件的 厂商名(最顶层命名空间)和包名(字命名空间),格式是 "name": "vendor/package",vendor 表示最顶层命名空间,package 表示字命名空间

require 表示该组件依赖的组件

一会安装了其他组件之后可以看看该文件的变化。

安装组件

在 ThinkPHP 项目中安装一个错误与异常的组件 Whoops,地址:https://packagist.org/packages/filp/whoops

项目下的 composer require filp/whoops 就是该组件在 Composer 下的安装命令。

该组件的作用是如果 PHP 脚本中触发了错误和没有捕获的异常,则出现 Whoops 的诊断页面。

在命令提示符下进入项目目录:

执行命令 composer require filp/whoops

看到以上提示说明组件安装完成,此时查看项目目录,发现在根目录下会多一个 vendor 目录:

组件 Whoops 就位于 Vendor/filp 目录下。

此时再看根目录下 composer.json 文件:

项目的依赖组件中多了 Whoops 组件,版本是 2.1

测试组件

在 Application/Home/Controller 下创建 TestController.class.php 文件。首先测试系统捕获异常时的输出:

<?php
/*** Created by PhpStorm.* User: dee* Date: 2016/8/6* Time: 12:44*/
namespace Home\Controller;
use Think\Controller;class TestController extends Controller {public function index() {try {$this->division(10, 0);} catch(\Exception $e) {echo $e->getMessage();}}function division($dividend, $divisor) {if($divisor == 0) {throw new \Exception('Division by zero');}}
}

输出:

然后测试不加载 Whoops 组件,脚本遇到未捕获异常时的提示:

<?php
/*** Created by PhpStorm.* User: dee* Date: 2016/8/6* Time: 12:44*/
namespace Home\Controller;
use Think\Controller;class TestController extends Controller {public function index() {// 测试未捕获的异常$this->division(10, 0);}function division($dividend, $divisor) {if($divisor == 0) {throw new \Exception('Division by zero');}}
}

访问:http://127.0.0.3/php/composer/thinkphp/Home/Test

输出:

最后测试加载了 Whoops 组件,并且脚本遇到未捕获的异常时的输出:

<?php
/*** Created by PhpStorm.* User: dee* Date: 2016/8/6* Time: 12:44*/
namespace Home\Controller;
use Think\Controller;class TestController extends Controller {public function index() {// 使用composer自动加载器require $_SERVER['DOCUMENT_ROOT'].__ROOT__.'/vendor/autoload.php';// 设置Whoops提供的错误和异常处理$whoops = new \Whoops\Run;$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);$whoops->register();// 测试未捕获的异常$this->division(10, 0);}function division($dividend, $divisor) {if($divisor == 0) {throw new \Exception('Division by zero');}}
}

输出:

测试结束。

安装组件的另一种方式

在 composer.json 文件中加入组件包:

例如添加组件 monolog

然后使用 composer update 命令下载组件

此时组件已经被安装到了项目中:

转载于:https://www.cnblogs.com/o-ye/p/6005520.html

使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组件相关推荐

  1. composer 安装 thinkphp

    composer[依赖管理工具] Composer 是 PHP 的一个依赖管理工具.我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用 ...

  2. Yii2.0 后台UI框架以及权限管理扩展实现权限菜单管理

    Yii2.0 后台UI框架以及权限管理扩展实现权限菜单管理 一.安装后台框架ui 二.安装权限管理扩展 三.实现权限菜单管理 一.安装后台框架ui composer require dmstr/yii ...

  3. ThinkPHP add、save无法添加、修改不起作用

    ThinkPHP add.save无法添加.修改不起作用 案例:数据库新添加一字段,修改值不成功. 解决方案:将Runtime/Data/_fields/下面的字段缓存删除,或者直接删除整个Runti ...

  4. linux加密框架 crypto 算法管理 - 算法查找接口

    参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的 ...

  5. linux加密框架 crypto 算法管理 - 哈希算法应用实例

    参考链接 Linux加密框架应用示例(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 应用角度讲解加密框架的运行流程_CHYabc123456hh的博客-CSDN博 ...

  6. linux加密框架 crypto 算法管理 - 算法检测

    参考链接 Linux加密框架的算法管理(四)_家有一希的博客-CSDN博客 函数介绍 如前所述,无论是静态算法还是动态算法,算法注册的最后一步都是进行算法正确性检验,一般流程是先调用__crypto_ ...

  7. linux加密框架 crypto 算法管理 - 动态和静态算法管理

    参考链接 Linux加密框架的算法管理(三)_家有一希的博客-CSDN博客 动态和静态算法管理 静态算法 加密框架中的算法分为静态算法和动态算法两种,其中静态算法指的是以"算法名.ko&qu ...

  8. linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_lookup函数

    参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客 函数介绍 static struct crypto_alg *crypto_alg_lookup(const char *n ...

  9. linux加密框架 crypto 算法管理 - 算法查找接口 crypto_larval_lookup

    参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客 crypto_larval_lookup函数介绍 crypto_larval_lookup函数的输入参数包括待查找的算法名n ...

最新文章

  1. 关于短文本匹配的深度学习模型
  2. 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
  3. cn.hutool.poi.excel.ExcelUtil 时不时没有数据列
  4. 用 ffmpeg + m3u8-segment 将h264的ES流转换成m3u8的过程记录
  5. COCO数据格式说明
  6. 浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除
  7. mvcc原理_Mysql MVCC实现原理
  8. php 移植 arm 精简,php5.4.5移植到arm-linux摘要,lighttpd配置
  9. 推荐5个应用 jQuery 特效的精美网站
  10. iphone黑屏转圈_iphone8一直在黑屏转圈
  11. python中如何统计元组中元素的个数_python-无论元素顺序如何,获取列表中的元组数...
  12. 万圣节魅惑手绘插画素材,没想到你是这样的可爱!
  13. linux firewalld
  14. golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等
  15. 官方高清标准地图素材下载地址
  16. 图片自动适应表格的大小
  17. 前端静态资源缓存最优解以及max-age的陷阱
  18. arcmap坐标点生成线和面
  19. apache、php安装
  20. 解决Required request body is missing:....

热门文章

  1. oncreate为什么一定要调用父类的oncreat_为什么你老是讲不清楚JS的继承模式
  2. Java笔记-ReadWriteLock与Condition的使用
  3. HTTP之长连接与短连接(C++ Qt框架实现)
  4. Spring中3种实例Bean的方法及设置Bean的别名
  5. Qt工作笔记-QCustomPlot让曲线动起来
  6. 3dcaptcha php,php实现的Captcha验证码类实例
  7. linux单点登录命令,配置RHEV中LINUX 虚拟机使用ACTIVE DIRECTORY(AD域)实现单点登录的方法...
  8. zabbix2.4 mysql模板_zabbix自带的模板监控mysql
  9. 日志写入hbase_千亿级日志系统设计思路,牛人必学!
  10. pandas绘图_Pandas内置绘图方法(线型图、柱状图、密度图)