Composer 笔记(PHPconf 台湾)

演讲人:by 大泽木小铁@KKBox

composer解决问题的场景:
方便接手项目的新人知道项目依赖于哪些类库(比如xml,log)

其他语言的套件管理系统:
node.js (npm), Ruby(gem), PHP (PEAR -> Pyrus即PEAR2 -> composer)

Comoser的优点:
- 可以针对项目,而非针对整个系统
- 可以检查执行环境
- 套件审核机制方便
- 设定文档编写简单,不需要用xml,而是用JSON
- 不需要用官方的套件库
- 流行
- 仿造npm和gem的依赖管理
- 支持VCS为下载源(SVN/GIT)

└── rootPackage
    ├── package1
    ├── package2
    │   ├── package4
    │   └── package5
    └── package3

package说明:
- package一般分为两类: application 和 library
- application package一般是root package,依赖于多个libraries
- library package也可以依赖于多个libraries

安装composer:
curl -sS https://getcomposer.org/installer | php

# 在项目根目录执行
php composer.phar <command>

# 让composer在系统全局可用 (chmod 加执行权限)
sudo mv composer.phar /usr/local/bin/composer

# 获取帮助信息
composer list
composer help <command>
composer show -i 查看目前安装的套件

把项目放到composer来管理:
cd /path/to/project
composer init

于是composer会询问name、description、authors等

name:比如 "开发者名称/package-mame" 
description: 比如 "一句话描述"
authors: 比如 "Name <email>", 默认会抓取~/.gitconfig的设置
minimum-stability: 只能用在root package上,比如:
      stable(默认)、RC、beta、alpha、dev (排序按稳定性倒序)
license:比如 Apache-2.0, BSD-2-Clause, MIT 等(参考SPDX的identifier),私有的项目用proprietary表示

require: 比如 "开发者名称/package-name": "version" ,指的是依赖于哪些套件所有package 都需要有一个composer.json。所有package 都需要有一个composer.json
require-dev:开发时安装,上线时不装,比如"phpunit/phpunit":">= 3.7.0", 格式同require,只能用在root package。

完毕后会生成一个composer.json文件

版本规则:
- 1.0.1 (明确指定)
- >= 1.0.1, < 2.0 (范围指定)
- 1.0.* (通配符指定)
- ~1.2 等价于 >=1.2, < 2.0 ; ~1.3.1 等价于 >=1.3.1, < 1.4.0 (下一个重要版本)

版本号+稳定度标识:在版本号后面可以加上: @<稳定度>, 比如:1.0.*@beta
稳定度+分支:dev-master
commit号表示:dev-master#2eb0c... 或 1.0.x-dev#2eb0c...

composer install 会先从 composer.json读取内容,然后读取下载的列表,再下载软件包,然后生成composer.lock(锁住目前安装的版本清单),该文件也要传到git里。新人在执行composer install时,就直接读取composer.lock列表里的清单中的套件。

composer update 会更新 composer.lock,它会找符合条件的最新的package。专案负责人才能执行第一次的install,之后的update也由专案负责人执行。(即凡事改动composer.lock文件的操作都由专案负责人执行)其他成员一律使用composer install。

所以,composer.json和composer.lock要commit到VCS里,library的composer.lock不要放到VCS里(因为library通常一直在更新),vendor也不要放。

官方套件库:(http://packagist.org)
-可搜索
-不像PEAR那样需要审核
- 不实际保存代码

composer先从packagist(默认的地方)拉取依赖包的清单,然后根据这份清单到VCS(比如github)拉取源代码。

用命令行搜索依赖包: composer require ,然后会询问搜索什么名称,比如输入phpunit,然后按提示操作

--prefer-source 从VCS下载
--prefer-dist 下载压缩文档(速度会快些)
--dev 安装开发用的套件
--no-update 不直接安装套件

查看平台上的套件:
composer show --platform
php开头 : php平台
ext-开头: 用PECL安装的套件
lib-开头: 系统函数库

可以在composer.json里把这些平台依赖写进去,比如:(需要手动写入)
"require" : {
  "php":">= 5.3",
  "ext-xdebug":">=2.3.3",
  "ext-http": ">= 1.7.6",
  "lib-openssl": ">= 0.9.8"
}

基于VCS(git)的composer.json:
{
  "require":{
      "vendor/私有仓库":"dev-master"
  },
  "repositories":[
    {
       "type":"vcs",
       "url":"[email protected]:vendor/私有仓库.git"
    }
  ]
}

repositories只能写在root package上,所以即便依赖包里的composer.json定义了repositories,composer也不会去使用。

自动载入: PSR-0,classmap,files 等类型

composer dump-autoload

命名空间和PEAR形式:
namespace格式: Vendor\Package\Class
PEAR格式:Vendor_Package_Class

"Vendor\", "Vendor\Package",
"Vendor_", "Vendor_Package_"

时间: 2024-08-06 20:18:03

Composer 笔记(PHPconf 台湾)的相关文章

Composer笔记

安装 windows中安装Composer 一般来说,windows下安装composer有两种办法,一种是直接下载并运行Composer-Setup.exe,这种方法在中国似乎很难完成安装.另一种就是下载composer.phar手动安装. composer.phar的下载地址.将下载好的地址放在PHP的软件目录下,然后运行如下命令: echo @php "%~dp0composer.phar" %*>composer.bat macos下安装 运行如下命令安装composer

甲骨文全国java程序大赛及学习java的一些感想

今天参加的甲骨文全国java程序大赛成绩出来了,无悬念的省一等奖,更操蛋的是,我们队只有两个人有成绩,另一个哥们竟然做成了模拟题,也就说我们两个人的分数加在一起比90%的三个人的分数都要高,瞬间自信心爆棚了. 学java的时间已经挺久的了,几乎每天都会敲百十行代码,刚开始学的时候,是看视频,马士兵老师的视频很基础,我学得比较认真,做了一本子笔记,这是我第一次把一个笔记本写完,然而视频毕竟是基础,而且不是很全面,同时有些技术已经过时了,这时候就要看一些经典的书籍,进一步提高自己. <<java学

#[Composer学习笔记]Part2:添加路由

在Part1的基础上,为项目添加路由: 增加路由扩展:这里选择macaw,在composer中的扩展包为: codingbean/macaw 编辑composer.json文件: {   "require": {     "codingbean/macaw": "dev-master"     } } 保存,并执行: composer.phar update 这时,vendor下就多了 codingbean 文件夹 编辑路由规则 创建config

#[Composer学习笔记]Part1:安装composer并通过composer创建一个项目

安装composer 这里分享的是linux下的composer安装: 首先,创建一个目录放置composer,并进入目录: mkdir /opt/composer cd /opt/composer 下载composer,下载成功后注册composer.phar为全局命令 curl -sS https://getcomposer.org/installer | /opt/php/bin/php ln -s /opt/composer/composer.phar /bin/composer.pha

Laravel 学习笔记之 Composer 自动加载

说明:本文主要以Laravel的容器类Container为例做简单说明Composer的自动加载机制. Composer的自动加载机制 1.初始化一个composer项目 在一个空目录下composer安装Laravel的容器Container包: composer require illuminate/container 然后在该目录下新建一个index.php文件,然后分析下Container类为何能被实例化: <?php /** * Created by PhpStorm. * User:

Yii2学习笔记1--Yii2的基本介绍和Composer安装

一.Yii的基本介绍 Yii 是一个高性能的,以快速,安全,专业著称 , 适用于开发 WEB2.0 应用的 PHP 框架 .自带了丰富的功能 ,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间. 二.Yii1.1和Yii2 没有Yii1.1的经验,并不妨碍对Yii2.0的学习.因为对ThinkPHP3.2.3较熟悉,可以两者对比着学(感觉很类似). 三.Windows 系统用Composer安装Yii2 ①

Composer 学习笔记

Composer 是 PHP 的一个依赖管理工具(据说是最优秀的).它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.目前很多项目以Composer 作为依赖管理工具,目前正在学习yii2框架,以yii2为例学习一些常用命令. 安装 具体安装方式可参照composer中文文档,分 *nix 和 win 平台: 安装 - *nix 安装 - Windows 安装完成后测试是否安装成功 composer -V 输入图中所示的命令,出现类似图中的结果,表面安装成功. 镜像是什么鬼? 不知道

composer 使用笔记

使用composer 更新项目比如: composer create-project topthink/think wwwroot dev-master --prefer-dist提示openssl异常信息解决办法:禁用提示 composer config -g -- disable-tls true 建立composer配置 composer config secure-http false   composer config -g secure-http false  

台湾ML笔记--1.1什么时候适合使用ML

适用情况: 1 exists some 'underlying pattern' to be learned --so 'performance measure' can be imporoved 例:小孩哭泣,没有内在模式 2 but no programmable(easy) definition --so 'ML' is needed 例:识别图片中是否有圆圈,可用编程方法 3 somehow there is data about the pattern --so ML has some