服務報價 | 域名主機 | 網絡營銷 | 軟件工具| [加入收藏]
?熱線電話: 130-5800-8007
當前位置: 主頁 > php教程 > php教程 >

通過Composer Github Packagist制作發布共享PHP包

時間:2017-03-14 10:57來源:未知 作者:最模板 點擊:
如何通過Composer Github Packagist制作發布共享PHP包,準備: 1.下載安裝Composer依賴管理工具 2.創建Github賬號,代碼托管平臺 3.創建Packagist賬號,包管理平臺 4.下載安裝git客戶端 發布代碼到Gi
如何通過Composer Github Packagist制作發布共享PHP包,準備:

1.下載安裝Composer依賴管理工具

2.創建Github賬號,代碼托管平臺

3.創建Packagist賬號,包管理平臺

4.下載安裝 git 客戶端

 

發布代碼到Github上

1.創建代碼倉庫

 

2.克隆代碼

 

 

[[email protected] composer]# git clone [email protected]:wangyulu/repeat-test.git
Initialized empty Git repository in /var/www/html/composer/repeat-test/.git/
warning: You appear to have cloned an empty repository.

這里我用的是ssh密鑰的方式克隆,前提是需要在本身先生成密鑰對,然后上傳公鑰到Github上。

這里會有一個警告:大概意思是克隆了一個空的倉庫。

 

3.推送代碼

[[email protected] repeat-test]# touch readme.md
[[email protected] repeat-test]# vi readme.md 
[[email protected] repeat-test]# git add .
[[email protected] repeat-test]# git commit -m 'add readme.md file'
[[email protected] repeat-test]# git push origin master

 

這時再刷新創建倉庫成功后的頁面就會變成顯示以下內容:

 

到這里基本的代碼托管就已經完成了,但我們需要利用compser來管理項目的依賴所以繼續第四步

 

4.初始化composer.json文件,并推送到遠程倉庫

執行 composer init 初始化命令

[[email protected] repeat-test]# composer init
Do not run Composer as root/super user! See https://getcomposer.org/root for details

                                            
  Welcome to the Composer config generator  
                                            


This command will guide you through creating your composer.json config.
//包名
Package name (<vendor>/<name>) [root/repeat-test]: sky/repeat-t
//簡介
Description []: this is test
//作者有郵箱地址
Author [admin <[email protected]>, n to skip]: sky <[email protected]>  
//最小穩定版本
Minimum Stability []: 
//包類型
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
//執照、許可證
License []: MIT
//下面是定義依賴
Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

{
    "name": "sky/repeat-t",
    "description": "this is test",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "sky",
            "email": "[email protected]"
        }
    ],
    "require": {}
}
//確認生成
Do you confirm generation [yes]? yes
//詢問是否要將 vendor目錄添加到.gitignore
Would you like the vendor directory added to your .gitignore [yes]? yes

 

查看 composer.json 文件

[[email protected] repeat-test]# cat composer.json 
{
    "name": "sky/repeat-t",
    "description": "this is test",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "sky",
            "email": "[email protected]"
        }
    ],
    "require": {}
}

 

添加autoload自動加載機制,編輯 composer.json 文件,最終結果為:

{
    "name": "sky/repeat-t",
    "description": "this is test",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "sky",
            "email": "[email protected]"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4" : {
            "Sky\\Demo\\"  : "src"
        },
        "files" : [
            "src/helper.php"
        ],
        "classmap"  : [
            "src/Common"
        ]
    }
}

 

按照autoload配置的加載方式,添加相應的文件,

在repeat-test目錄下創建 src 目錄,并在目錄下創建Hello.php文件,內容為:

(這里只貼出psr-4加載方式中引用的文件)

<?php
namespace Sky\Demo;

class Hello
{
    private $name;

    public function __construct($name = 'World')
    {
        $this->name = $name;
    }

    public function hello()
    {
        return 'Hello ' . $this->name;
    }

}

 

最后我們需要更新下自動加載的配置,目的是為了使我們的代碼添加到composer的自動加載機制中管理。

composer update

執行完后會發現本地有個 vendor 目錄,這時我們去查看此目錄中有個composer文件夾,注意查看 autoload_psr4.php,autoload_files.php,autoload_classmap.php這幾個文件中的內容。就會明白 autoload的配置后再更新都做了些什么事情。

 

測試我們的代碼是否正確,在repeat-test目錄中創建test.php文件,內容為:

require 'vendor/autoload.php';

//hello world
$hello = new Sky\Demo\Hello('worlddd );

echo $hello->hello() . PHP_EOL;

 

推送到遠程倉庫

[[email protected] repeat-test]# git add .
[[email protected] repeat-test]# git commit -m 'init composer.json file and auload'
[[email protected] repeat-test]# git push origin master

 

至此別人就可以通過composer 把代碼自動加載到他們的項目中使用。但由于composer自動加載包的地址是Packagist平臺,所以就需要去指定遠程倉庫地址為Github上的地址,如下composer.json文件調整后的配置:

{
    "repositories":[
        {
            "type":"vcs",
            "url":"https://github.com/wangyulu/repeat-test"
        }
    ],
    "require": {
        "sky/repeat-t":"dev-master"
    }
}

 

 

注意:如果上面的倉庫地址中沒有 composer.json文件,則執行下面操作則會報找不到此文件。

 

建議這里的 composer.json 文件及下面的安裝另起一個目錄,這里在 /var/www/html/test中操作執行 composer install 后而會生成以下文件:

composer.lock vendor/

這里我們就把 repeat-test倉庫中的代碼加載到我們的項目中,使用時只需要通過 require vendor/autoload.php,就可以使用了。

 

發布代碼到 Packagist 平臺

復制地址校驗成功后再提交后注意頁面上有個警告,提示配置 Github 與 Packagist之間自動更新的鉤子,根據向導提示點擊 GitHub Service Hook 鏈接,復制自己在 Packagist 上的 api token,然后再去 Github 找到對應的倉庫,里面點擊 Settings -> Integrations & services后,繼續點擊 Add services 按鈕在下拉列表中選擇“Packagist”后,需要填寫Packagist賬號名,api token ,第三個域可寫可不寫(寫的話就是 Packagist的域名)后點擊 update service,再點擊 test service 后就 ok 了

 

注意:在發布之前有個驗證可能會遇到以下提示:

The vendor is already taken by someone else. You may ask them to add your package and give you maintainership access. The packages already in that vendor namespace can be found at sky

 

大概意思是已經存在一個 Sky 供應商名了,您可以要求他們添加您的包裹并授予您維護權限。這里我們還是換一個吧,所以在命名的時候需要注意下,盡量避免這種情況

至此我們就可以通過 composer install require sky/repeat-t dev-master 直接在項目中引用了

(責任編輯:最模板)
頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
欄目列表
熱點內容
体彩22选5开奖结果