从零开始打造自己的PHP框架——第4章

文章目录
  1. 1. Composer
  2. 2. 安装Composer
  3. 3. 使用Composer
    1. 3.1. 初次使用
    2. 3.2. 更新依赖
    3. 3.3. 更换Composer源
  4. 4. 使用依赖
    1. 4.1. smarty
    2. 4.2. whoops
    3. 4.3. var-dumper
  5. 5. 源码分享
  6. 6. 书签

Composer

Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

本篇,我们就在自己的项目中使用composer来进行依赖管理。

安装Composer

1、访问Composer下载地址,下载安装对应平台的composer,安装方法参照官方文档

2、打开命令行,输入composer -V,测试是否安装成功。

使用Composer

初次使用

1、在项目根目录下新建composer.json,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"name": "VKPHP",
"description": "A PHP Framework for php developer",
"type": "Framework",
"keywords": [
"PHP","PHP Framework","VKPHP"
],
"homepage": "http://www.voidking.com",
"time": "2017-09-14",
"license": "MIT",
"authors": [{
"name": "VoidKing",
"email": "voidking@qq.com",
"homepage": "http://www.voidking.com",
"role": "Student"
}],
"require": {
"PHP": ">=5.3.0",
"smarty/smarty": "~3.1"
}
}

需要解释的,是require字段,要求PHP大于等于5.3,smarty大于等于3.1且小于等于4.0。

版本号选择参照下表:

2、安装依赖
在根目录打开命令行,输入composer,如果composer.json文件有错误会出现提示,没有错误则提示可选参数和功能。
输入composer install,即可安装依赖到vendor目录中,并且自动生成composer.lock和vendor/autoload.php。

更新依赖

1、在composer.json中添加依赖,whoops任意版本,var-dumper任意版本。

1
2
"filp/whoops": "*",
"symfony/var-dumper": "*"

2、安装依赖
composer install,提示

1
2
3
4
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files

从提示可以看出,composer install读取的是composer.lock中的依赖,而不是最新的composer.json。

所以,我们要使用命令composer update,这样就可以下载新写入的依赖,并且更新composer.lock。

更换Composer源

如果在composer installcomposer update时非常慢,那么我们可以更换Composer源。

访问Composer中国镜像站,参照文档,在composer.json所在目录中执行:
composer config repo.packagist composer https://packagist.phpcomposer.com

或者,直接在composer.json中添加:

1
2
3
4
5
6
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}

使用依赖

smarty

1、当前,lib目录和vendor目录中都包含了smarty,使用verdor中的smarty会更有格调,遂弃用lib目录,改用vendor作为第三方库目录。

2、根目录下index.php修改为:

1
2
3
// define('LIB',VKPHP.'/lib'); //第三方库所在目录
define('LIB',VKPHP.'/vendor'); //第三方库所在目录
include LIB.'/autoload.php'; //自动加载第三方库

3、core目录下render.php修改为:

1
// require_once(LIB.'/smarty/libs/Smarty.class.php');

因为index.php中自动加载了所有第三方库,所以我们不再需要自己引入。

访问 http://vkphp.dev/index/render2 ,smarty正常工作。

whoops

根目录index.php修改为:

1
2
3
4
5
6
7
8
if(DEBUG){
ini_set('display_errors', 'On');
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
}else{
ini_set('display_errors', 'Off');
}

访问 http://vkphp.dev/index/render3 ,即可看到炫酷的报错页面,没错,whoops就是一个错误显示插件。

var-dumper

修改app/ctrl/indexCtrl.php中的data函数为:

1
2
3
4
5
6
7
public function data(){
$db = new \core\db();
$sql = 'select * from vk_user';
$result = $db->query($sql);
dump($result);
dump($result->fetchAll());
}

访问 http://vkphp.dev/index/data ,即可看到炫酷的变量输出页面,没错,var-dumper是一个变量显示插件。

源码分享

https://github.com/voidking/vkphp/releases/tag/v1.4.0

书签

从零开始打造自己的PHP框架

Composer中文网

Composer中文文档