Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。
这种想法并不新鲜,Composer 受到了 node’s npm 和 ruby’s bundler 的强烈启发。而当时 PHP 下并没有类似的工具。
Composer 将这样为你解决问题:
a) 你有一个项目依赖于若干个库。
b) 其中一些库依赖于其他库。
c) 你声明你所依赖的东西。
d) Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。
哦,Composer介绍的很牛逼的样子,那么如何创建一个自己的Composer 包呢,现将具体过程奉上。注:操作系统(centos7)。
一、准备工作
yum install git
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
想学习composer的同学请移步composer中文
二、创建目录
cd /var/www/
mkdir mycdemo
三、在/var/www/mycdemo目录下,创建composer.json
{
"name": "guyan/mycdemo",
"description": "demo",
"type": "library",
"license": "mit",
"authors": [ { "name": "guyan0319", "email": "[email protected]" } ],
"minimum-stability": "dev",
"prefer-stable": "true",
"require": { "php": ">=7.0" },
"autoload": { "psr-4": { "User\\Client\\": "src/User/Client" } } }
也可以通过 composer init 初始化扩展包,然后修改composer.json增加自动加载规范(命名空间和目录映射关系)和环境要求。
四、创建类文件 Client.php
mkdir src
mkdir src/User
mkdir src/User/Client
在 /var/www/mycdemo/src/User/Client下,创建Client.php
/** * Created by PhpStorm. * User: Administrator * Date: 2018/3/17 * Time: 22:47 */
namespace User\Client;
class Client
{
/** * No explanation * * @author Zhiqiang Guo * @return void * @throws Exception * @access public */
public function index ()
{
echo "this is client";
}
}
五、测试
运行
composer install
查看 vendor/composer/autoload_psr4.php 中生成命名空间和目录的映射关系
增加.gitignore为git忽略一些文件
vendor/
composer.lock
六、提交代码到github
1、登录github创建一个项目
2、远程管理github (如果已了解可略过)
远程管理github有两种方式
- github账号即 use https
url 类似 https://github.com/guyan0319/mycdemo.git
- 通过 即 use ssh
url 类似 [email protected]:guyan0319/mycdemo.git
本文是通过管密钥理的,具体可参考https://www.cnblogs.com/baiboy/p/github.html
生成密钥
cd
cd .ssh
ssh-keygen -t rsa
生成如下文件
再将id_rsa.pub 内容复制到github网站 Settings下
3、将项目提交到对应仓库,参考如下
git init
git add -A
git commit -am "this is demo"
git remote add origin git@github.com:guyan0319/mycdemo.git
git push -u origin master
七、登录packagist
将 [email protected]:guyan0319/mycdemo.git 粘贴 到
点 “check” 然后点击submit,至此,自己的composer包就提交成功了。
此时我们还需设置Packagist上自动更新扩展包,即当我们更新扩展包提交到GitHub时,Packagist自动更新。
在没有设置自动更新时,Packagist上包详情页会有这样一个提示
This package is not auto-updated. Please set up the GitHub Service Hook for Packagist so that it gets updated whenever you push!(这个软件包不是自动更新的。请为Packagist 设置GitHub服务钩,以便在您推送时更新!)
设置步骤
1、去Packagist 拿到令牌
2、去github网站,Settings->Repositories
选择你创建的 guyan0319/mycdemo
选择active
点击add service 设置完成
八、测试自己的开发包
1、创建目录
cd /var/www
mkdir demo
2、安装
composer require guyan/mycdemo dev-master
细心的同学会发现,上面“dev-master”的版本信息,如果想去掉的话,需要打标签。
安装完目录为
3、在 /var/www/demo 创建 index.php
/** * Created by PhpStorm. * User: Administrator * Date: 2018/3/18 * Time: 0:37 */
require_once './vendor/autoload.php';
use User\Client\Client;
$Client = new Client();
echo $Client->index();
4、运行 index.php
php index.php
输出 “this is client” 证明成功