コピペコードで快適生活

明日使えるソースを自分のために

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に登録する

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
# => いろはにほへとイロハニホヘト