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 当然就拉下来了这个包,当然只有一个测试文件而已。

 

posted @ 2017-06-13 21:22  datang6777  阅读(270)  评论(0编辑  收藏  举报