Composer 很重要很重要 内核 原理
话题先攒着,过来再来写
先来一张原理图
composer的原理和其他的包管理工具都是一样的,只是实现的细节有些不同,例如yum,例如brew,例如apt-get还有packets。
使用自己的composer库
1.首先我们要搞定本地,也就是图上本地的composer.json
可以使用命令或者自己创建
composer init #创建一个composer.json文件
composer install #第一次从远处仓库拉去php包的时候执行
composer update #修改本地的composer.json后执行
composer about #查看composer的信息
composer info
composer self-update#composer自己更新
composer --check#查看帮助
composer require #包含一个php包进来
remove 移除一个包
本地的必要配置如下
{
"repositories": [
{
"type": "vcs",
"url": "git@github.com:baixiaoshi/composer_test.git"
},
{
"packagist": false
}
],
"require": {
"hello/hello": "dev-master"
}
}
#这是一个最简短的配置,现在要拉去github上的一个名字叫做hello/hello的php包
repositories : 就是php远端仓库的地址啦,这里我用的类型是vcs也就是版本控制github上自己的测试包
packagist : 这里是禁用了官方的包仓库地址,
我们可以配置官方的地址来拉去php包
{
"type": "composer",
"url": "http://packagist.phpcomposer.com"
}
require选项包含远端php包,其中hello/hello是包的名字,所以待会我们自己创建一个包的名字也就是这个了,dev-master是版本的意思,我们经常看到这样的吧
{
"monolog/monolog": "~0.1" #~号表示大于的意思
}
2.下面就来搞定远端了,客户端的配置明显是要拉去一个名字叫做hello/hello,版本是dev-master的包,那就直接来了
{
"name": "hello/hello",#包的名字,客户端要找这个的啦
"autoload": {
"psr-4": {
"Hello\\": ""#这里设置包拉下来自动加载包里面的那些文件,是通过命令空间来自动加载的哦
}
},
"require": {
"php": ">=5.4.0"#如果有对其他的一些包的依赖还是require在这里就好了
}
}
<?php
namespace Hello;#这个命名空间就是上面autoload配置中的啦
class Hello {
public function say_hello() {
exit('hello world');
}
}
3.回到客户端执行composer install 当然就拉下来了这个包,当然只有一个测试文件而已。