"BOKU"のITな日常

還暦越えの文系システムエンジニアの”BOKU”は新しいことが大好きです。

モダンなPHPなら、Composerを使えないと話にならない・・そうです/Windows10

モダンなPHPを勉強しなおすなら、まず、Composerが使えないと話にならないと言われたので、まず、そこからです。

Windows10環境+XAMPP+Braketsエディタでやります。

f:id:arakan_no_boku:20190922143447p:plain

 

はじめに

 

ちょっと事情があって、モダンなPHPを勉強しなおそうとしてます。

人気の「Laravel」等のフレームワークを使えば、それなりに恰好はつくのですが、基本的なことをわからないで型からはいるのが嫌なので、まず、「PHP The Right Way」を教材にポイントを押さえておこうと思います。

ja.phptherightway.com 

 

まずは依存関係の管理ツールだな

 

PHPも他の言語と同じく、のライブラリやフレームワークコンポーネントが大量にあって、それらをうまく組み合わせてプログラムを作るのが普通です。

そうなると、当然、あるライブラリは、別のライブラリの特定のバージョンを動作前提にしていたりするので、Aを使うのに、BやCやDもインストールしないといけない・・なんてことが普通に発生します。

この依存関係の管理を手作業でするなんて考えられません。

Pythonでpipを使うな・・と言われるようなもんですからねえ。

PHPにはComposerとPEARという2種類の依存性管理ツールが双璧らしいです。

どっちが良いかですが、「PHP The Right Way」によれば

Composerは、PHP用としておすすめの依存管理ツールだ。 

そうです。

対して「PEAR」は。

PEARの個々のパッケージは、ルールに従った構造にしておかないといけない。

つまり、PEARで使えるようにするにはパッケージの作者がきちんと準備しておかないといけないってことだ。 

と書いてバッサリいってます。

ということで「Composer」を使うことに決定です。  

 

Composerをインストール 

 

Windowsへのインストールについては、こう書かれてます。

Windowsの場合、一番簡単なのは [ComposerSetup][6] インストーラーを使う方法だ。

これは、すべてのユーザーで使えるようにインストールしたうえで $PATH も設定してくれるので、 あとはコマンドラインから composer を呼ぶだけで使えるようになる。

 おーー、簡単。

上記インストーラーのダウンロードはこちらからできます。

getcomposer.org

上の方にWindowsインストーラーがあります。

実行します。

最初にこんな画面で「developper mode」みたいな意味ありげなチェックボックスがでてきますけど、チェックしなくていいみたいです。

f:id:arakan_no_boku:20190922151110p:plain

あとは、ほぼデフォルトでNEXTを押していけば良くて、悩むところはないです。

XAMPPのphp.exeのパスも自動的に見つけてくれましたので。

コマンドプロンプトを立ち上げて「composer」と打ち込んでみます。

f:id:arakan_no_boku:20190922232918p:plain

うん。

インストールはできてるみたいです。

 

基本的な使い方の確認

 

基本は、「composer require」を使って、フレームワーク・ライブラリ・ツールなどをインストールして使うということですね。

そうすれば、依存関係なんかも考慮して、必要なものがあれば、一緒にインストールしてくれるということです。

このへん、Pythonのpipなんかを使っている人間にはしっくりきます。

 ただ、Composerには「グローバル」と「ローカル」の2種類のインストール方法がある点がちょっと違います。

例えば、friend/php-cs-xxxというライブラリを例にすると。

グローバルにインストールする場合は「global」をつけます。

composer global require friend/php-cs-xxx

ローカルにインストールする場合はつけません。

composer require friend/php-cs-xxx

です。

 

インストールされる場所

 

それぞれの違いはインストールされる場所です。

globalをつけた場合は

C:\Users\xxxx\AppData\Roaming\Composer\vendor

 (xxxxはユーザによって変わります。)

の下に、サブフォルダを作ってインストールされます。

対して。

globalをつけないと、カレントフォルダのvendorフォルダにインストールされます。

つまり、プロジェクト固有で使う場合です。

気を付けないといけないのは、必ずプロジェクトフォルダをカレントフォルダにして実行することですね。

でないと、変なとことにvendorフォルダができてめんどくさいことになります。

 

composer.json

 

composerでインストールしたものの設定ファイルが「composer.json」です。

基本は

composer require を実行すると、プロジェクトの依存関係を追加する。

もしまだ composer.json がなければ、新しいファイルを作る。

ということなので、安心です。

でも、中には自分の環境にあわせて、composer.jsonを修正してやらないといけないものもあります。

そんな場合は、composer.jsonを修正・保存して。

composer dump-autoload

 って実行してオートローダーに登録してやる手順になります。

 

composer.lock

 

もうひとつ、composer.lockというファイルがあります。

ダウンロード済のライブラリやバージョンが記録されているファイルです。

他の環境にうつるときは、このファイルをもっていって、その環境で

composer install

すれば、元の環境と同じライブラリの同バージョンがダウンロードされるみたいです。

これは楽ですね。

開発環境から本番にもっていくときに、composer.lockをもっていくだけでOKというのは非常に魅力的です。

 

依存関係を最新の状態に更新

 

しばらく使っていると、重要な修正などがはいったなどの理由で、環境のライブラリのバージョンをあげないといけなくなる時がきます。

そうしたとき依存関係を環境まるごと最新の状態に更新するには

composer  update

を実行します。

個別に・・、たとえば、friend/php-cs-xxxを更新するなら。

composer global update friend/php-cs-xxx

とします。

この辺が基本の使い方みたいです。

今回は、こんなとこですかね。

ではでは。