Windowsに構築したXAMPP + NetBeansのPHP開発環境にComposerを設定する
前回のエントリ(XAMPP + NetBeansで作ったPHP開発環境でデバッグできるようにする - 猫にWeb)で
NetBeansでPHPプログラムをデバッグでステップ実行できるようになりました。
今回はPHPのパッケージ管理ツールであるComposerを設定してNetBeansから利用する手順を紹介します。
パッケージ管理は依存関係もあるので、やはりツールにまかせたほうが得策です。
Composerを使うことでプロジェクト単位でパッケージ管理をすることができます。
他にもComposerにはオートローディングという機能があり、requireやincludeを書かなくても必要なライブラリのファイルを読み込んでくれます。
手順としてはこんな感じです。
1. Composerをインストールする
Composerは公式サイトからインストーラーをダウンロードしてインストールすることもできますが、
コマンドプロンプトで実行した方が楽チンなので、コマンドでインストールします。
コマンドによる手順も公式サイトに書かれています。
phpがあるディレクトリに移動して以下のコマンドを実行します。
> cd c:\xampp\php > php -r "readfile('https://getcomposer.org/installer');" | php > echo @php "%~dp0composer.phar" %*>composer.bat
上記が終わって以下のコマンドを実行してバージョンが表示されたらOKです。
> composer -V > Composer version 1.0-dev (4d134ce8a2aacb9566fee8deb8c514248fd2a983) 2015-04-08 13:43:49
3. NetBeansにComposerを設定する
「ツール」 → 「オプション」 → 「フレームワークおよびツール」を選択します。
左サイドから「コンポーザ」を選択して、「コンポーザ」に手順1で作成したcomposer.pharを設定します。
ネットでよくある手順では、ここから新規にプロジェクトを作成して、
プロジェクトを選択して、「コンポーザ」の「初期化」を選択するのですが、
私の環境では以下のエラーが発生しました。
[RuntimeException] JSON encoding failed: Malformed UTF-8 characters, possibly incorrectly encoded
色々調査したのですが、根本的な解決法は見つけられませんでした。
ただし、NetBeansで「コンポーザ」の「初期化」時にやっているのは以下のコマンドを実行して、
composer用の設定ファイルであるcomposer.jsonを作成しているだけです。
php composer.phar init
そこで以下の手順を追加で実施して解決しました。
5. 初期化コマンドを直接実行する
コマンドプロンプトを起動して、作成したプロジェクトの直下に移動して以下のコマンドを実行します。
プロジェクトからcomposer.pharファイルへの相対パスを指定してください。
> php ..\..\php\composer.phar init
色々聞かれますが、後から修正できるので全部デフォルトでOKです。
ただし、Authorはフォーマットを「John Smith
それとラスト2つの質問はNOでOKです。
Would you like to define your dependencies (require) interactively [yes]? no Would you like to define your dev dependencies (require-dev) interactively [yes]? no
これでcomposerの設定ファイルcomposer.jsonがプロジェクト配下に作成されます。
ここでぶっちゃけるとcomposer.jsonはこんなファイルなので手動で作っても全然OKですw
{ "name": "necoyama3/sample", "authors": [ { "name": "necoyama3", "email": "necoyama3@gmail.com" } ], "require": {} }
これで準備はOKです。
「コンポーザ」 → 「依存性の追加」で好きなライブラリを検索して依存関係を含めたライブラリをダウンロードして管理することができます。
以上です。お疲れ様でした。
改めて思うのはWindowsで軽量言語の開発はするべきじゃないんだけど、
仕事の都合でしかたないのよね。