composer是用来干嘛的?

我看laravel经常看到这个单词 不知道怎么用?是不是安装laravel的时候要用到这个软件?安装完了就没用了?为什么tp框架没用的这个composer呢 百度了一下对这个概念还是很模糊 谁能解释一下呢

阅读 10.1k
9 个回答

Composer 是用来管理依赖的。

长久以来,PHP的开源方式都是项目级的,就是说我一开源就是一个项目,比如一整套的CMS,一个框架,如Codeigniter。为啥呢?其中一个很重要的原因是你不好拆开来,如果拆开来的话,没有一个有效的管理工具组合起来,导致拆开的小模块大家无人问津。

然后Composer就出现了,它负责去管理大家开源的各个小模块,有效的整合到一起,使之成为一个完整的项目。

比如说题主您提到的 Laravel 实际上就是由好多的小模块组成的,比如说实现路由模块是由symfony/routing完成的;比如说记日志是由 monolog/monolog 实现的。

当你用 composer 安装 laravel 的时候,composer 会自动检测所需依赖并下载,表现出来就是执行完命令后满屏滚动安装各种模块。

composer 是一个PHP代码依赖管理工具之一
比方说你的项目需要用到PHPmail这个类库,只要按照composer的格式,composer
就能自动帮你拉下这个代码库到你项目中.

使用如:orm、email、图像处理、分页处理、模板引擎,上传,以及一些与具体业务相关的功能等等,如果你的项目使用了composer,当你想实现某个功能的时候,建议你先到http://packagist.org上搜一下,说不定就有现成的库可用,提高开发效率。

thinkphp5 也支持了composer
composer 可以提供升级支持吧,大概像yum

nodejs有npm,php有composer,有了包进行依赖管理可以快速开发,比如你要开发微信,可以
搜索WeChat

找到第一个overtrue/wechat

安装
composer require "overtrue/wechat:~3.1" -vvv //还可以安装指定版本

composer.lock包含了所有安装包的版本,只要发送这个文件给同事进行安装,就可以保证大家使用的代码是一致的,更多参考官网吧。

安装后会自动生成一个vendor目录放wechat源代码,vendor目录下有个autoload.php,使用的话如下:

require './vendor/autoload.php';
#通过spl_autoload_register自动加载所需要类文件

use EasyWeChat\Foundation\Application;

$options = [
    'debug'     => true,
    'app_id'    => 'wx3cf0f39249eb0e60',
    'secret'    => 'f1c242f4f28f735d4687abb469072a29',
    'token'     => 'easywechat',
    'log' => [
        'level' => 'debug',
        'file'  => '/tmp/easywechat.log',
    ],
    // ...
];

$app = new Application($options);

$server = $app->server;
$user = $app->user;

$server->setMessageHandler(function($message) use ($user) {
    $fromUser = $user->get($message->FromUserName);

    return "{$fromUser->nickname} 您好!欢迎关注 overtrue!";
});

$server->serve()->send();

laravel的index.php 就这么加载的 require __DIR__.'/../bootstrap/autoload.php';

依赖管理
就像node的npm,java的maven

和npm一样 php的依赖管理工具。现在开发都是组件式开发,tp5也引入了composer

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏