PHPプログラムに関する各種メモ書き

composer で 自作パッケージを使用する / トークンエラーに対応する

● composer で 自作パッケージを使用する

● 次のコマンドを実行できる自作パッケージを composer で管理する

use Hogehoge\HelloComposer;
HelloComposer\HelloComposer::show('テストの文字列です');

● 1. Github に 次のファイル構成でファイルを push

hogehoge
|--hellocomposer
|  |--README.md
|  |--composer.json
|  |--src
|  |  |--HelloComposer.php

HelloComposer.php の 中

<?php

namespace Hogehoge\HelloComposer;

class HelloComposer
{
    public static function show( $message='hello !' )
    {
    	echo $message;
    }
}

composer.json の 中

{
    "name": "hogehoge/hellocomposer",
    "description": "hello-composer",
    "type": "library",
    "minimum-stability": "stable" ,
	"require": {
		"php": ">=7.0.0"
	},
	"autoload": {
		"psr-4": {
			"Hogehoge\\HelloComposer\\": "src/"
		}
	}
}

psr-4 のところだけ 名前空間を記述するので、

・先頭文字大文字
・区切りはバックスラッシュ( "" の中にあるのでエスケープするように2個連続 )

で記述します。 それ以外は小文字で記述します。

● 2. 読み込む側の ディレクトリのトップの composer.json に以下の項目を追加する

1.repositories を追加する

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/hogehoge/hellocomposer.git"
        }
    ],

hogehoge/hellocomposer.git のところは適宜書き換えてください)

2.require を追加する

    "require": {
        ..............................
        "hogehoge/hellocomposer" : "dev-master"
    },

hogehoge/hellocomposer のところは適宜書き換えてください)

● 3. composer コマンドで読み込み、名前空間のファイルを生成する

composer update
composer dump-autoload

composer dump-autoload は必ず update のたびに実行しましょう。

これで準備が整いました。

use Hogehoge\HelloComposer;
HelloComposer\HelloComposer::show('テストの文字列です');

こちらが使用できます。

● GitHub API limit (60 calls/hr) エラーが出る場合の対応

curl -u 'アカウント名' -d '{"scopes":["repo"],"note":"Help example"}' https://api.github.com/authorizations

パスワードを聞かれるので入れます。 成功すると json が帰ってくるので、その中の

  "token": "aa482378bbe99729923d5cf7xxxxxxxxxxxxxxxx",

のような文字列を保存

composer config -g github-oauth.github.com aa482378bbe99729923d5cf7xxxxxxxxxxxxxxxx

のようにコマンドを打てばOKです。

● 上記コマンドで「"code": "already_exists"」エラーとなる場合

GithubへWEBサイトからログインし、

Settings → Developer settings →Personal access tokens

メニューから既存のトークンを削除します。

または Help example の文字列を変えて再度コマンドを実行します。

No.1617
03/25 09:52

edit