PHPと言えばcomposer

昨今の。

昨今のPHPと言えばcomposerです。
いやもう昨今と言うよりかなり古い話になっている気がします。
兎にも角にも
composerは便利だから使おうじゃないかと言うお話。

今回、説明に利用している環境は
phpが導入済みのLinuxです。

composer

まず何者なんでしょうか

omposerは、PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システムである。 Nils AdermannとJordi Boggianoにより開発され、現在も両氏によってプロジェクトの管理が継続されている。両氏は2011年4月に開発を開始し、2012年3月1日に初めてリリースされた。Node.jsの『npm』およびRubyの『bundler』から強い影響を受けている。
コマンドライン上で動作し、アプリケーションが依存するライブラリなどをインストールする。 また、利用可能なパッケージを含んでいるメインリポジトリ『Packagist』 で利用可能なPHPアプリケーションをインストールすることも可能であるほか、ライブラリ向けにサードパーティーのコードを容易に利用出来るオートロード情報を指定できる機能も提供されている。
また、Laravelを含めた有名なオープンソースのPHPプロジェクトの重要な機能の一部として利用されている。

Wikipedia「compiser」の項目より抜粋

便利なライブラリは多いけどそれを集めるなんてめんどくさいよね。
という事で
jsonを書いてコマンドを一発叩けば
あっという間にパッケージがインストールされる!そんな便利なものです。

自分で作るComposer

composerにまとめておけば
あとから自分で利用するのも便利そう。
再利用したいですよね過去の資産。

そこで自分でcomposerをやってみようと言うお話です。
これは自分が忘れてしまうのでメモ的な感じでもあります。

composerインストール

まずはインストールです

php -r "readfile('https://getcomposer.org/installer');" | php

まずはダウンロードです。

そしてダウンロードされたものをPathの通る場所に移動です。

sudo mv composer.phar /usr/bin/composer

さぁ使い始めましょう。

composerで自分の開発環境をつくる

ではつくりましょう。
ディレクトリを切って(今回はcomposer-_testとしました)
そのディレクトリへ「移動 cd」し

composer init

すると色々聞かれます。

Package name (/) [root/composer_test]:

いい感じの名称をつけましょう。
vender部分は会社名なら会社名で
個人ならHNとかでも良いかもしれません。
test/composer_test
とすることにします。

Description []:

よしなな説明を記入しましょう。
今回は「composer test」で。

Author [, n to skip]:

Authorは あってもなくてもです。
設定するなら設定して、スキップしてしまうなら「n」です。

Minimum Stability []:

stableとしておきましょう

Package Type (e.g. library, project, metapackage, composer-plugin) []:

パッケージの種類はなんだろうか?と言うやつです。
今回は、「library」とします。

License []:

ライセンスを決定します。

Apache-2.0
BSD-2-Clause
BSD-3-Clause
BSD-4-Clause
GPL-2.0
GPL-3.0
LGPL-2.1
LGPL-3.0
MIT

などどれかですが、自分しか使わないなどであればここはなにも入力なしで先に進みましょう。
今回は「Apache-2.0」にすることにします。

Would you like to define your dependencies (require) interactively [yes]?
そのままエンターしましょう。

Search for a package:

そのままエンターしましょう。

Would you like to define your dev dependencies (require-dev) interactively [yes]?
そのまま(ry
Do you confirm generation [yes]?

そのまま(ry

そうしますとディレクトリ内に「composer.json」ができます。
見てみましょう。

{
    "name": "test/composer_test",
    "description": "composer test",
    "type": "library",
    "license": "Apache-2.0",
    "minimum-stability": "stable",
    "require": {}
}
JSONファイルですのでその後自分で変更してもOKです。

ディレクトリを作りましょう

必要なディレクトリを作りましょう。


mkdir -p src/composer_test/Exception
mkdir logs
mkdir tests
mkdir docs
mkdir example
mkdir bin
とりあえずこれだけ作ればOKでしょう。

AutoLoadを設定しましょう


AutoLoadこそComposerの花形。と言ってもきっと過言ではないでしょう。
そこでAutoLoadの設定はさきほど出来た
composer.jsonに追記しましょう。
パッケージ名などはよしなに読み替えて下さい。

{
    "name": "test/composer_test",
    "description": "composer test",
    "type": "library",
    "license": "Apache-2.0",
    "minimum-stability": "stable",
    "require": {},
     "autoload": {
                "psr-4": {
                        "test\\composer_test\\": "src/composer_test/"
                }
      }

}

追加されたのは赤の部分です。
これを追加したら
以下のコマンドでGOです

composer dump-autoload

これで「vender/」が出来てオートロードが可能になりました。

Gitの除外を設定しておきましょう

パッケージはよしなにGitで管理しましょう。
GCPのGitでもGitHubでも。

vi .gitignore
/vender

まず/venderを除外しておきましょう。
普通にComposerで作られたAutoLoadファイルまでGitに上がっても困りますので。

vi logs/.gitignore
*
!.gitignore

logsのほうも除外しておきましょう。

vi tests/.gitignore
*
!.gitignore

tests/も除外してもいいかもしれません。
もしも、testsに有用なテストプログラムを多く作って共有したりするならば
ここは除外なしで。
私は書いては捨てるテストばっかりなので・・・
実際は、tests/はgitに入れておいたほうが無難です。

作ったパッケージを使ってみる

作ったパッケージは以下の設定で。

{
    "repositories": [
        {
            "type" : "vcs",
            "url" : "https://github.com/XXXX/XXX"
        }
    ],
    "require" : {
        "test/composer_test" : "^0.0.1"
    }
}
使うときはこれで「composer install」としましょう。


必要最低限のcomposerで自分用のパッケージを作るやつでした。


2019-11-14 18:02:14

Writer:ゆたさん@開発者。

HomePagehome Twitter Facebook
「PHPと言えばcomposer」をシェアしませんか?

最新ページ

  • またMVCを作り始めたお話し

    今回はプライベートではなくてオープンなリポジトリとしてGitHubでリポジトリ管理しています。OreOreMVCNagare(つまりここの)MVCの置き換えもし...
  • Steamのゲームでコントローラが効かなくなった時の対応

    環境M1 MacbookAirSteamPS5のコントローラをBluetoothで接続ゲームは、Vampire Survivorsです。現象Steamのコントロ...
  • 作る予定なもの各種。

    お世話になっております。お久しぶりです。Nagareについての記事でございます・・・Nagareのエンジニアのくせに全然、Nagareに関しまして最近発信してい...
  • メタメタメタメタメタバース

    最近やたらとメタバースメタバースと言う言葉が飛び交っております。やはりこのビッグウェーブには乗るしかないのでしょうか。問題はどう言う方法でこの「メタバース」の波...
  • 着手するまでが時間がかかると言うおはなし

    何かを始めようとするときに計画まではOKで実際に実行する時時間がかかりませんか?腰が重い・・・身体がダル重い感じが・・・こう・・・やる気がどこかに言ってしまって...