1. 程式人生 > >建立一個自己的composer包

建立一個自己的composer包

Composer 是 PHP 的一個依賴管理工具。它允許你申明專案所依賴的程式碼庫,它會在你的專案中為你安裝他們。Composer 不是一個包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每個專案的基礎上進行管理,在你專案的某個目錄中(例如 vendor)進行安裝。預設情況下它不會在全域性安裝任何東西。因此,這僅僅是一個依賴管理。

這種想法並不新鮮,Composer 受到了 node’s npm 和 ruby’s bundler 的強烈啟發。而當時 PHP 下並沒有類似的工具。

Composer 將這樣為你解決問題:

a) 你有一個專案依賴於若干個庫。

b) 其中一些庫依賴於其他庫。

c) 你宣告你所依賴的東西。

d) Composer 會找出哪個版本的包需要安裝,並安裝它們(將它們下載到你的專案中)。

哦,Composer介紹的很牛逼的樣子,那麼如何建立一個自己的Composer 包呢,現將具體過程奉上。注:作業系統(centos7)。

一、準備工作

  • 註冊一個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

1、登入github建立一個專案
這裡寫圖片描述

這裡寫圖片描述
2、遠端管理github (如果已瞭解可略過)
遠端管理github有兩種方式
- github賬號即 use https
url 類似 https://github.com/guyan0319/mycdemo.git
- 通過 即 use ssh
url 類似 [email protected]:guyan0319/mycdemo.git

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

[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服務鉤,以便在您推送時更新!)

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