美文网首页
PHP 新手入门指南 - Composer

PHP 新手入门指南 - Composer

作者: chansey | 来源:发表于2017-06-27 12:03 被阅读184次

我们在 PHP 项目中通常会引入很多类文件,而程序运行的时候则依赖它们,如果依赖内容很多管理起来就会很麻烦,有没有一个好的办法解决这个问题,答案是肯定的,它就是 Composer

Composer

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor
)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

这种想法并不新鲜,Composer 受到了 node's npm 和 ruby's bundler 的强烈启发。而当时 PHP 下并没有类似的工具。

Composer 官网
Composer 中文文档

安装
  • for Linux / Unix / OSX
curl -sS https://getcomposer.org/installer | sudo php

或者直接下载 phar 最新的文件

如果你需要全局使用它,你可以将它加入到环境变量 PATH 中:

mv composer.phar /usr/local/bin/composer
  • for Windows

下载安装即可

小实践

这里我们结合系列文章中内容,对之前项目中引入的类文件内容进行调整,通过 Composer 来实现自动加载。

首先,来看看之前项目中的文件 core/bootstrap.php ,内容如下:

<?php

$app = [];

$app['config'] = require 'config.php';

require 'core/Request.php';
require 'core/Router.php';
require 'core/database/Connection.php';
require 'core/database/QueryBuilder.php';

$app['database'] = new QueryBuilder(
    Connection::make($app['config']['database'])
);

可以看到,这里 require 了很多依赖文件。

好,让我们开始进行调整。

首先,需要在项目个根目录创建 composer.json 文件。

Composer 文档详尽,在此之前建议多读以了解如何使快速用它。

{
    "autoload": {
        "classmap": [
            "./"
        ]
    }
}

这里使用通过 classmap (类映射)的形式,以当前目录为基础,Composer 会检索目录下其它的类,并自动引入它们。

接下来,还需要前执行命令生成自动加载的相关文件:

composer install

将会项目下生成一个 vendor 目录:

vendor

打开 autoload_classmap.php 你会发现你想引入的文件已经加入进来:

<?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Connection' => $baseDir . '/core/database/Connection.php',
    'Post' => $baseDir . '/test.php',
    'QueryBuilder' => $baseDir . '/core/database/QueryBuilder.php',
    'Request' => $baseDir . '/core/Request.php',
    'Router' => $baseDir . '/core/Router.php',
);

如果你项目有增加新的类和依赖内容要加载,你需要重新生成一次自动加载文件,通过 composer dump-autoload 命令来实现。

接下来我们需要在项目中引入自动加载文件。

在项目的起始文件 index.php,内容如下:

<?php

// 这里引入了自动加载文件
require 'vendor/autoload.php';
require 'core/bootstrap.php';

require Router::load('routes.php')
            ->direct(Request::uri(), Request::method());

接下来,你可以注释或者去掉之前 core/bootstrap.php 中的引入:

<?php

$app = [];

$app['config'] = require 'config.php';

// require 'core/Request.php';
// require 'core/Router.php';
// require 'core/database/Connection.php';
// require 'core/database/QueryBuilder.php';

$app['database'] = new QueryBuilder(
    Connection::make($app['config']['database'])
);

如果再次运行项目代码,结果照旧,如你所愿。

至此我们就通过 Composer 自动加载实现了依赖管理。

相关文章

  • PHP 新手入门指南 - Composer

    我们在 PHP 项目中通常会引入很多类文件,而程序运行的时候则依赖它们,如果依赖内容很多管理起来就会很麻烦,有没有...

  • PHP 之 Composer 新手入门指南

    自2012年3月1日发布以来,Composer因提供了PHP迫切需要的东西:依赖项管理而广受欢迎。实际上,Comp...

  • ubuntu16.04 消息队列 TP5 - PHP Resqu

    TP5 - PHP Resque Worker 安装指南 命令安装 composer require chrisb...

  • PHP Composer详解

    PHP composer php composer的作用 composer是如何实现类的自动加载 composer...

  • Composer安装和使用

    安装Composer 标签(空格分隔): PHP laravel composer Composer 参考:htt...

  • PHP 新手入门指南 - PHP 框架

    对于 Web 开发者来说,PHP 是一款非常强大而又受欢迎的编程语言。世界上很多顶级的网站都是基于 PHP 开发的...

  • 安装

    php composer环境安装参照php环境 按照官网安装配置composer global require l...

  • Composer 安装(Linux)

    安装 git 下载 Composer 并使用 php 运行 Composer 环境变量 查看 Composer 版本

  • 2.1. 简介

    简介2.3. 创建扩展包 |《Composer 中文文档》| PHP 技术论坛 Composer 是 PHP 的一...

  • 知识框架

    Linux linux basic shell basic PHP php composer Framework ...

网友评论

      本文标题:PHP 新手入门指南 - Composer

      本文链接:https://www.haomeiwen.com/subject/kvnscxtx.html