パケージ(ライブラリ)作成およびPackagistへ登録

  1. Githubにて新しく作成するパッケージのリポジトリを作成する。 パッケージリポジトリの例↓
    https://github.com/amaraimusi/CrudBase
  2. コマンドラインツールを立ち上げ、プロジェクトを作成するディレクトリに移動し、 ローカル環境に先ほど作成したリポジトリをクローンする。(ローカル環境に開発環境を作成する)
    	cd git
    	git@github.com:amaraimusi/CrudBase.git
    			
  3. 	cd CrudBase
    	mkdir src
    	mkdir tests
    			
    プロジェクトのディレクトリ内にsrcディレクトリとtestsディレクトリを作成する。

    srcディレクトリには作成するパッケージのソースコードを配置する。 testsはPHPUnitのテストケース・ファイル群を配置する。 これらのディレクトリの名前は何でも良いが慣習的にこのような名前にする。PHPUnitは別に必須という分けではないので使い方については割愛。

  4. プロジェクトのディレクトリ内にcomposer.jsonを空作成し、下記を記述する。

    composer.json

    {
    	"name" : "amaraimusi/crudbase",
    	"description" : "CRUD support library",
    	"keywords" : [
    		"CRUD",
    		"web service",
    		"管理画面"
    	],
    	"type" : "library",
    	"license" : "MIT",
    	"homepage" : "https://amaraimusi.sakura.ne.jp/CrudBase",
    	"authors" : [{
    			"name" : "amaraimusi",
    			"email" : "amaraimusi@gmail.com",
    			"homepage" : "https://amaraimusi.sakura.ne.jp/",
    			"role" : "Developer"
    		}
    	],
    	"minimum-stability" : "dev",
    	"require-dev" : {
    		"phpunit/phpunit" : "^9.0"
    	},
    	"autoload" : {
    		"psr-4" : {
    			"CrudBase\\" : "src/crudbase/"
    		}
    	}
    }
    			

    compser.jsonの解説

    "name" : "amaraimusi/crudbase" "name" : "Githubでのあなたのユーザー名/新しく作成するパッケージ名(すべて小文字にすること。大文字禁止になっている)"
    "description" : "CRUD support library", "description" : "パッケージの説明文(任意)",
    "keywords" : [ 検索用のキーワード。他の開発者がパッケージを検索する手がかりに。省略可能。
    "type" : "library" パッケージのタイプ。library、metapackage、composer-installerの3種類があるが、通常はlibraryに設定しておけばよい。
    "license" : "MIT" ライセンスの種類を記述。フリーライセンスにするならMITとする。
    "homepage" : "https://amaraimusi.sakura.ne.jp/CrudBase", 当パッケージの解説、デモ、サンプルなどを記述したサイトへのURLを指定すると良い。省略可能。
    	"authors" : [{
    			"name" : "amaraimusi",
    			"email" : "amaraimusi@gmail.com",
    			"homepage" : "https://amaraimusi.sakura.ne.jp/",
    			"role" : "Developer"
    
    開発者の情報を記述する。
    "minimum-stability" : "dev", 開発版なら「dev」をセット、安定版なら「stable」をセットする。
    	"require-dev" : {
    		"phpunit/phpunit" : "^9.0"
    	},
    
    開発版である場合のみ依存するパッケージを記述する。
    	"autoload" : {
    		"psr-4" : {
    			"CrudBase\\" : "src/crudbase/"
    		}
    	}
    
    「"CrudBase\\" : "src/crudbase/"」の部分は重要。
    名前空間とパスの紐づけを行っている。 名前空間はクラスファイルに記述する「namespace」のこと。「namespace CrudBase;」などと記述する。 この辺りはハマりやすいのでスペルミスがないよう慎重に。
    参考:PHP composer.jsonのプロパティ名まとめ
  5. Composerを実行する。PHPUnitなどがインストールされる。
    	composer update
    			
  6. autoload.phpなどの再生成。
    	composer dump-autoload
    			
  7. パッケージを開発する。
    srcディレクトリ内に当パッケージのクラスファイルを配置し、プログラミングする。
    開発にはPHPUnitを利用すると便利。

    開発環境のディレクトリとファイルの構成例


    Neko.php
    
    <?php 
    namespace CrudBase;
    
    class Neko{
        
        public function bark($name){
            return $name . 'はニャーンと吠えた';
        }
        
    }
    			
  8. 開発が終わったらGitにてコミット&プッシュする。
    	git add -a
    	git commit m="任意のコメント"
    	git push
    			
  9. Githubサイトにアクセスし、該当するリポジトリのページを開き、ページのURLを控え留めておく。(packagistへの登録に必要。)
  10. packagist.orgのサイトにアクセスし、サインインする。GitHubのアカウントでサインインできる。
  11. 上段メニューにある「Submit」をクリックするとpackagistへ登録ページへアクセスできる。 あとはテキストボックスに控えていたURLを貼り付け、CheckボタンそしてSubmitボタンを押していくだけ。
    Check時にエラーがあれば修正しよう。
  12. 以上でパッケージの登録は終わり。
    packagist.orgの検索ボックスから先ほど登録したパッケージを検索してみよう。
    自分が登録したパッケージが表示されたらOK.

登録したパッケージの使い方

他のライブラリと使い方と基本的に同じなので詳細は割愛。一応、記述例は下記の通り。

開発プロジェクトのディレクトリやファイルの構成例


composer.json

{
	"require-dev" : {
		"amaraimusi/crudbase" : "dev-master"
	},
	"autoload" : {
		"psr-4" : {
			"App\\" : "src/"
		}
	}
}
	

index.php


<?php 
$autoloader =require_once '../vendor/autoload.php';
require_once 'Animal.php';
$animal = new Animal();
$animal->test();
	

Animal.php


<?php 
use CrudBase¥Neko;

class Animal{
    
    public function test(){
        echo 'アメリカザリガニ<br>';
        $neko = new Neko();
        echo $neko->bark('黒い猫');
    }
}
	

登録したパッケージの使い方2

既存のcomposer.jsonに自作パッケージを追加する場合は以下のコマンドを実行する。
composer require amaraimusi/crudbase dev-master
composer.jsonに「maraimusi/crudbase」の記述が追加されているのが確認できる。


composerの指定ライブラリを更新

composer update amaraimusi/crudbase


上記だとなぜか失敗することがあるが、この場合、composer.pharを通して実行すると上手くいくかもしれない。(自分の環境はそうであった)
php composer.phar update amaraimusi/crudbase