使用 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": "[email protected]"
        }
    ],
    "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 命令下载组件

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

时间: 2024-10-25 16:33:54

使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组建的相关文章

ThinkPHP快捷方法汇总(随时添加)

读取配置 C('参数名称') 例如,读取当前的URL模式配置参数: $model = C('URL_MODEL'); // 由于配置参数不区分大小写,因此下面的写法是等效的 // $model = C('url_model'); C方法也可以用于读取二维配置: //获取用户配置中的用户类型设置 C('USER_CONFIG.USER_TYPE'); 因为配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数已经生效过期了. 动态配置 设置格式:C('参数名称','新的参数值

MUI框架-08-窗口管理-创建子页面

MUI框架-08-窗口管理-创建子页面 之前写过这一篇,不知道为什么被删了,我就大概写了,抱歉 创建子页面是为了,页面切换时,外面的页面不动,让 MUI 写出来的页面更接近原生 app 官方文档:http://dev.dcloud.net.cn/mui/window/#subpage 创建子页面 1.在HBuilder 新建移动app项目,选择 mui 3.新建html目录用来存放html文件,新建含 mui 的HTML文件 在 Hbuilder 中,新建HTML文件,选择"含 mui的HTML

composer安装thinkphp

https://getcomposer.org/Composer-Setup.exe 正常安装composer以后,执行composer create-project topthink/thinkphp myapp安装thinkphp.

【ThinkPHP3.2.3】学习ThinkPHP笔记:熟悉框架目录结构(2)

: ├─ThinkPHP 框架系统目录(可以部署在非web目录下面) │  ├─Common       核心公共函数目录 │  ├─Conf         核心配置目录  │  ├─Lang         核心语言包目录 │  ├─Library      框架类库目录 │  │  ├─Think     核心Think类库包目录 │  │  ├─Behavior  行为类库目录 │  │  ├─Org       Org类库包目录 │  │  ├─Vendor    第三方类库目录 │ 

究极!ThinkPHP 3.2.2 框架源码逐行分析(一)

tp框架采用单入口模式,单入口文件index.php: 在index.php第24行,将ThinkPHP/ThinkPHP.php包含过来, line18,19:memory_get_usage();函数为php系统函数; 第22行~31行,定义常量使用的关键词是'const',关于const与define的区别,请参考这篇文章,还有这篇. 第34行中的'__DIR__'为php 5.3.0新增的魔术常量,其值为当前文件所在的路径,注意:不要认为__DIR__所在的文件被包含,其值就是包含者的文

使用composer安装thinkphp[全局安装]

1.进入CMD,参阅:https://www.phpcomposer.com 的入门指南 curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer 注意: 如果上诉命令因为权限执行失败, 请使用 sudo 再次尝试运行 mv 那行命令. 现在只需要运行 composer 命令就可以使用 Composer 而不需要输入 php composer.phar. 全局安装 (on O

Thinkphp 连接数据库、查询、添加

一.连接数据库配置及Model数据模型层 1. Thinkphp\conf\convertion.php中找到数据库设置部分,复制到自己的配置文件中,并添加好有关数据库的内容 JiaoWu\Home\conf\config.php: 2. 制作model模型 a)  model本身就是一个类文件 b)  数据库中的每个数据表都对应一个model模型文件 c)  最简单的数据model模型类 在Home\Model文件夹中新建一个模型文件:InfoModel.class.php <?php nam

车辆管理系统之搭建框架 添加必要的数据 安装svn(二)

JAVA EE第一阶段项目——车辆管理系统.MyEclipse + MySQL +powerDesinger +tomcat +svn. 今天组长把项目的分工安排好了!这个周末两天的作业就是我的车主信息管理.主要业务就是增 删 (单条删除 批量删除) 改 查 分页! 感觉还是比较简单的.但是经过今天晚上的分析. 在添加车主信息的时候,这里添加的个人照片,要让他显示出来这个需要想个办法让他显示出来.因为Chrome浏览器是不会显示图片的.暂时就这个问题.就在做作业的时候来发现问题了. 今天把数据库

Spring框架的事务管理及应用

Spring框架简介 Spring框架是一个2003年2月才出现的开源项目,该开源项目起源自Rod Johnson在2002年末出版的<Expert One-on-One J2EE Design and Development>一书中的基础性代码.在该书中,Rod Johnson倡导J2EE实用主义的设计思想,而Spring框架正是这一思想的更全面和具体的实现.Spring框架由一个容器,一个配置和组织组件的框架,和一组内置的为事务.持久化和Web用户接口提供的服务组成.作为一种轻量级的J2E