composerで使えるライブラリを作ってみた
composerで使うライブラリを作ったことがなかったので、試しに作ってみた。
作ってみる
ソースはこんなかんじで
https://github.com/kinosuke01/convertible-romaji
作るときのコマンドメモ
# コンテナ起動してログイン docker compose up docker compose exec php /bin/bash # composer.pharのインストール curl -s http://getcomposer.org/installer | php # composer.jsonの内容に従って # ライブラリをインストール&autoload設定 php composer.phar install # autoloadの更新だけ composer dump-autoload # テスト実行 vendor/bin/phpunit ./tests/ # composer.jsonのチェック php composer.phar validate # タグうち git tag v0.0.1 git push origin v0.0.1
packagistに登録する
- https://packagist.org/ でユーザ登録する。
- https://packagist.org/packages/submit から gitのURLを設定する。
namaspace
よくわかってなかったのでメモ。
ライブラリの名前空間は
ベンダー名\ライブラリ名\クラス
が一般的っぽい。定義の書き方
namespace Kinosuke01\ConvertibleRomaji; class ConvertibleRomaji { // 略 } // Rubyで書くならこんな // module Kinosuke01::ConvertibleRomaji // class ConvertibleRomaji // end // end
- 呼び出し方
use Kinosuke01\ConvertibleRomaji\ConvertibleRomaji // ↑は以下の略式 // use Kinosuke01\ConvertibleRomaji\ConvertibleRomaji as ConvertibleRomaji // クラスが名前空間なしで使えるようになる。 $romaji = new ConvertibleRomaji('irohani');
作ったライブラリを使ってみる
docker-composer.yml作る
services: php: image: webdevops/php-apache-dev:7.4 volumes: - "./:/var/app" ports: - "80:80" tty: true
コンテナ起動 & ログイン
docker compose up docker compose exec php /bin/bash
composer.json作る
{ "require": { "kinosuke01/convertible-romaji": "0.0.*" } }
composer installする
# コンテナ内で実行 composer install
test.php作る
<?php require 'vendor/autoload.php'; use Kinosuke01\ConvertibleRomaji\ConvertibleRomaji; $romaji = new ConvertibleRomaji('irohanihoheto'); echo $romaji->toHiragana(); // いろはにほへと echo $romaji->toKatakana(); // イロハニホヘト
test.phpを実行
# コンテナ内で実行 php test.php # => いろはにほへとイロハニホヘト