创建一个自己的composer包

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

这种想法并不新鲜,Composer 受到了 node’s npm 和 ruby’s bundler 的强烈启发。而当时 PHP 下并没有类似的工具。

Composer 将这样为你解决问题:

a) 你有一个项目依赖于若干个库。

b) 其中一些库依赖于其他库。

c) 你声明你所依赖的东西。

d) Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。

哦,Composer介绍的很牛逼的样子,那么如何创建一个自己的Composer 包呢,现将具体过程奉上。注:操作系统(centos7)。

一、准备工作

  • 注册一个Composer Hub账号(如果有略过)。
  • 注册一个GitHub 账号(如果有略过)。
  • 安装git 命令: yum install git
  • 安装composer
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

<?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

<?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” 证明成功

猜你喜欢

转载自blog.csdn.net/guyan0319/article/details/79596211