01:Comopser简介和安装-【包依赖管理】
- 网址:getcomposer.org
- 保存的文件夹:vendor目录
- 安装:
- mac:
- 下载会获取到composer.phar这个文件
- 移动到环境变量目录并改名:mv composer.phar /usr/local/bin/composer
- 移动到环境变量的目录后,等于注册了全局使用,并且已经更改名字为:composer
- 那么可以直接再终端使用 composer前缀 后面跟随命令即可
02:package引用和版本
- 项目下composer.json的写法, 如何引入包得写法
{
"require":{
"mustache/mustache":"2.9.0",//这里就是写入包名字与具体版本号
//前面这个是vendor目录的包得vendor name
//然后第2个同名的就对应包的名字,一般来说是这样写法
}
}
- 引入版本时候
~
号说明
- 例子:~2.8.1,那么范围区间是2.8.1 to 2.9.0
- 例子:~2.8,那么范围区间就变成 2.8 to 3.0
-
~
号:代表一个区间,0--9
- 引入版本时候
^
号说明
- 例子:^2.8,那么代表是,2.8 到 3.0,也就是说最大得版本号+1的点0版本,也就是2.8的2+1,.8变成.0
- 例子:今天实践了下,
^
号也可以理解成为安装最新版本,下面例子就出现最新版的包了
{
"require":{
"mustache/mustache":"^2.7"
}
}
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing mustache/mustache (v2.11.1) Loading from cache
Writing lock file
Generating autoload files
- 可以直接再package网站进行搜索,并且直接使用包得命令在终端直接下载
- composer require <vendorname>/<name> 这样就可以下载了,但下载的是最新版
03:理解composer的install和update
- composer.json对应的是composer update
- composer.lock对应的是composer install,
- 注意:没有lock文件composer就执行json文件
04:composer自动加载简单分析
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit23bbeae59271b037728c906bcb04be61::getLoader();
- 第二步:查看
autoload_real.php
,目录:vendor/composer/autoload_real.php
- 通过getLoader方法里的一个foreach进行注册
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ( $map as $namespace => $path ) {
$loader->set($namespace,$path);
}
- 第三步:查看
autoload_namespaces.php
,目录:vendor/composer/autoload_namespaces.php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Mustache' => array($vendorDir . '/mustache/mustache/src'),
//src目录下就按照以上的命名空间来操作
);
- 第四步:查看依赖包目录下得composer.json文件,看它通过那个命名空间规范来加载
- 目录:mustache/composer.json
- 通过psr-0规范标准
"autoload": {
"psr-0": { "Mustache": "src/" }
}
- 整条自动加载流程:
- 引入自动加载文件 autoload.php
- 自动执行autoload_real.php中得方法getLoader()
- 方法中调用了autoload_namespaces.php进行返回一个数组,到此自动加载命名空间 基本结束
- namespaces文件执行的命名空间标准需要查看依赖包下得composer.json文件
05:Find A Package
- 在packagist.org进行搜索依赖包
- 再终端可以使用命令 :composer serach <包名>
- 显示具体信息终端命令:composer --all <包名>
06:使用composer创建项目
- 常见命令 :composer create-project
- composer创建项目终端命令:composer create-project <原始名字>/<默认名字> <别名> <版本号>
07: Understanding Require Dev
- composer一个特点:require-dev--本地开发使用到得package
- 如果下载一个项目,并不需要dev环境中得package可以使用:composer install --no-dev来操作
- 所以上传自己项目时候需要包含composer.lock这个文件
08:composer运行shell命令
- 网址:getcomposer.org/doc/articles/scripts.md下得command events看到具体命令
- 只需要在composer.json文件加上scipts这样的引导数组即可,下面例子参考:
"scripts":{
"post-install-cmd":"echo 'hello'"
}
09:发布自己的Package
- 第一步:登陆github,创建项目
- 第二步:终端git clone 项目地址
- 第三步:进入项目目录,创建composer.json文件:执行命令composer init即可
- 第四步:根据提示填写完毕穿件composer.json
- package name <vendor>/<name>
- description
- author
- minimum stability
- package type
- license
- 第五步命令:git add .
- 第六步命令:git commit -m"更改的描述"
- 第七步命令:git push
- 第八步:发布到packaglist.org,登陆自己的id
- 第九步:点击右上角submit,然后粘贴github连接后,再点击check
- 第十步:添加自动更新webhook
- 到 github项目,点击settings
- 点击左边导航webhooks & services
- 点击右边的add services
- 搜索package
- 填写user token,token可以再packagist得profile找到
- 粘贴token,然后addservice
- 然后点击生成出来的package出现画面
- 点击test service,出现ok表示成功
- 备注:绑定完成后,当你git提交更新后就会同步到package那边了