Composer -- PHP依赖管理的新时代

一、简介

  说到composer,绝大多数的开发人员都会用到。composer是一个什么工具呢?

  composer 是 PHP 用来管理依赖(dependency)关系的工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

  

  composer解决的是什么问题?

  在开发中,我们可能会用到第三方库,一个项目一般都是依赖若干个库,而第三方库可能也需要依赖另一个第三方库。那么,谁来管理这种依赖关系呢,就是composer。它不仅解决了库的依赖关系,他还会根据环境,如PHP版本下载对应可支持的第三方库的版本。

二、安装

  想要使用,第一步肯定就是安装。那么如何安装呢?

  安装前首先确保已经安装了PHP并配置到环境变量中可全局使用(像集成环境的可能要手动配一下)。

  windows+R打开运行输入cmd打开控制台,输入“curl -sS https://getcomposer.org/installer | php”,这个前提是要下载curl,点击http://curl.haxx.se/download下载最新版本安装即可。

  也可以使用 "php -r "readfile('https://getcomposer.org/installer');" | php"命令,通过PHP下载安装器。

  

  下载成功后会在当前目录下生成一个composer.phar文件,即安装成功。

  

  进入到文件所在目录可输入“php composer.phar” 查看composer的信息

  

  为了方便,我们可以将composer.phar配置到全局变量中,这样我们所有的项目都能使用composer工具。配置后,只需使用composer命令即可,无需php composer.phar

  

三、使用

  如何使用呢,首先进入到项目的根目录中,创建一个composer.json文件。

  格式如下

{
"name": "wwj/demo",
"description": "teach",
"authors": [
{
"name": "githubwwjcn",
"email": "xxxxxx@qq.com"
}
],
"require": {}
}

  也可以在命令提示符窗口使用composer命令:composer init

  

  插件的安装:

  可以直接在json文件中的require字段中写入插件名字

"require": {
"monolog/monolog": "1.0.*"
}

  然后在命令提示符窗口输入命令:composer install,进行安装插件,composer会自动安装该插件所要依赖的所有第三方插件

  

  安装成功,看目录demo

  

  多出了一个vendor文件夹和一个composer.lock文件。

  首先说composer.lock文件,这个用来干什么呢?先来看看里面的内容:

  

{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "ea169889a99da2e9cb5cb9911a50b7c5",
"packages": [
{
"name": "monolog/monolog",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "b704c49a3051536f67f2d39f13568f74615b9922"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/b704c49a3051536f67f2d39f13568f74615b9922",
"reference": "b704c49a3051536f67f2d39f13568f74615b9922",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Monolog": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be",
"role": "Developer"
}
],
"description": "Logging for PHP 5.3",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging"
],
"time": "2011-10-24T09:39:02+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}

  composer.lock-锁文件,在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定改项目的特定版本。当再次安装该项目的时候,composer首先会检测是否存在composer.lock锁文件,存在则按照锁文件的插件的版本进行安装,而不会安装最新的版本;不存在,则按照composer.json,require里面的版本要求进行安装。

  再说vendor文件夹,大家估计也猜到肯定就是存放插件的地方了

  如图,,也包含了composer提供的插件加载功能autoload。

四、应用

  插件安装后,如何在自己的项目中使用。很简单,只需引入自动加载文件autoload.php。  

  require 'vendor/autoload.php';

  然后实例化该插件

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo');

  基础的应用,应该就是这样了,有错提出来,我纠正一下~

composer的基本运用的更多相关文章

  1. Laravel Composer and ServiceProvider

    Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...

  2. 基于Composer Player 模型加载和相关属性设置

    主要是基于达索软件Composer Player.的基础上做些二次开发. public class ComposerToolBarSetting { public bool AntiAliasingO ...

  3. Composer概述及其自动加载探秘

    composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具 ...

  4. composer 出现 configuration does not allow connection to http.......

    出现这样的问题是,镜像使用的是http,而原地址是需要https,所以配置下关掉https就好了. 我们来个全局设置的方法: composer config -g secure-http false ...

  5. 在linux上如何通过composer安装yii

      Composer可以理解成一个依赖管理工具 它能解决以下问题 a) 你有一个项目依赖于若干个库. b) 其中一些库依赖于其他库. c) 你声明你所依赖的东西. d) Composer 会找出哪个版 ...

  6. composer

    composer 是PHP框架的包安装工具,类似于bower ,npm.bundler. 是命令行工具,没有图形界面. 系统要求 运行 Composer 需要 PHP + 以上版本.一些敏感的 PHP ...

  7. composer 报错:Your requirements could not be resolved to an installable set of packages 解决方法

    composer 报错: - Your requirements could not be resolved to an installable set of packages xxxxxxxxxxx ...

  8. composer 使用笔记

    使用composer 更新项目比如: composer create-project topthink/think wwwroot dev-master --prefer-dist提示openssl异 ...

  9. mac composer 安装

    在命令行执行 curl -sS https://getcomposer.org/installer | php 如果没安装 curl 执行以下代码 php -r "readfile('htt ...

  10. composer安装

    1.首先到php.net下载对应版本的php,zip版本即可,注意windows需要vc11运行库支持 2.配置path路径添加对php解压目录的引用 3.将php.ini-development  ...

随机推荐

  1. css兼容小问题

    1.RGBA在CSS3.0体现,不向下兼容: 2.非float元素和float元素在一起版本时,非float元素会排斥float元素,为避免换行,float元素应优先显示(放非float元素之前)

  2. .netcore2.0 发布CentOS7

    1.一般在windows pc上使用vscode 开发好.netcore 程序如果需要发布到其他平台需要注意一些事情 首先需要明白2个概念:FDD(Framework-dependent deploy ...

  3. maven仓库中的LastUpdated文件删除脚本

    cleanLastUpdated.bat(windows版本) @echo off rem create by NettQun rem 这里写你的仓库路径 set REPOSITORY_PATH=D: ...

  4. jQuery源码分析系列 : 整体架构

    query这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery又给扫一遍 我也不会照本宣科的翻译源码,结合自己的实际经验一起拜读吧! ...

  5. java 文件的上传和下载

    主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载.上传时文件是存放在服务器中,我用的是tamcat. 首先建立一个servlet 类,对文件的操作 package com.d ...

  6. java unsupported major.minor version 51.0 解决

    1.概述 出现如题所述异常 是因为jdk高版本 编译后的class文件 运行在低版本的jre环境下(如jdk7编译 运行在jdk6环境下) 2. 解决方案 在eclipse等ide中重新编译 指定编译 ...

  7. JS判断请求来自Android手机还是iPhone手机

    <script type="text/javascript"> var browser = { versions: function () { var u = navi ...

  8. 使用electron构建跨平台Node.js桌面应用

    最近,把团队内经常使用的一个基于Node.js制作的小工具给做成了可视化操作的桌面软件,使用的是electron,这里简单分享一下使用electron的一些经验和心得. 一.如何使用electron把 ...

  9. 【One Day菜鸟到大鸟】MyBatis搭建环境

    一.概述     MyBatis是一个持久化框架和Hiberante差不多.比起JDBC来说MyBatis封装了JDBC让我们能够面向对象开发.比起Hiberante来说卸下了Hiberante那种重 ...

  10. Ubuntu 下 /etc/resolv.conf文件总是自动清除问题的解决方案

    最近学习Linux,在虚拟机中安装的是Ubuntu操作系统,用了几天发现Ubuntu无法上网,打开命令终端,输入命令: ping www.baidu.com -c2 结果显示名称无法识别,而直接与宿主 ...