composerの概要

composerはPHPにおけるパッケージ管理ツールです。

類似のツールとして
LinuxのYum
PHPのpear
NodeJSのnpm
があげられます。

リポジトリと呼ばれるパッケージが登録されたサーバから、パッケージのダウンロード・インストールを行ってくれます。
また、ダウンロードしたパッケージに必要な依存パッケージも一緒に落としてくれるなど環境作成を楽にしてくれるツールです。

◆composerのインストール(Windows+Xampp環境)
PHPへのpathが通っているコマンドプロンプト(PowerShell)で次のコマンドを実行します。
※composer.pharがphp.exeに依存しているので「xampp\php」で操作するとpathを通しやすくて良いんじゃないかと。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

正常に終了すると
カレントにcomposer.pharが作成されます。

composer.pharはcomposer本体で、PHPプログラムをphar圧縮したものです。
使用する際は

php composer.phar [コマンド]

のように使います

◆composer-setup.phpやcomposer.pharについて
composer-setup.phpがやってることはcomposer.pharをダウンロードしてるだけ。
そしてcomposer.pharは独立したPHPプログラムなのでコピペして好きなところに置いていいっぽい。

もっと言えば、composer.pharがあればわざわざインストールしなくてもcomposer.pharをコピペして使って問題なさそうですね

◆composer.pharを使いやすく(linuxっぽく)
composer.pharをダウンロードして設置しただけだと、composerを実行する際に

php composer.phar [コマンド]

のように書く必要があります。

Linux環境では

composer [コマンド]

で実行できるため、いろいろなサイトで学習するにあたって読み替えが必要になったりしますし、このほうが入力が少なくて便利ですよね。

これを実現する設定をしていきたいと思います。
composer.pharを設置したディレクトリに
composer.batを作成し、次の内容をコピーしてください。

@ECHO OFF
php "%~dp0composer.phar" %*

以上です。

動作確認のために次のコマンドを実行してみてください。

composer -V

composerのバージョンが表示されればOKです。

◆composer.batを理解する

composer.batを準備すると、なぜ

composer [コマンド]

とすることができるのか?を解説してきます。

まず、コマンドプロンプトの挙動として
実行可能ファイルの拡張子(.exe,.com,.batなど)は省略できる。
っという性質があります。

なので、コマンドプロンプトに記述する「composer」とは「composer.bat」を意味します。

composer.batの中の意味は
「%~dp0composer.phar」とはcomposer.batがあるディレクトリのcomposer.phar
「%*」は、composer.batに渡されたパラメータを意味します。

php.exeでcomposer.pharを実行し、comoper.batに渡された引数を丸投げしてます。

composer -V
を実行すると次のように変換されるわけですね
php c:\xampp\php\composer.phar -V

xamppにca証明書を設定

参考:http://nanoappli.com/blog/archives/7992

composer.pharやらsymfony.pharでcurlするときに次のようなエラーが出たときの対処法

cURL error 60: SSL certificate problem: unable to get local issuer certificate

内容的には信頼できるca証明の一覧が無いぞ~!ってことらしい

cacert.pemをダウンロードして、phpのディレクトリ放り込む
php.iniのcurlセクションの「curl.cainfo」にcacert.pemのフルパスを指定する。

[curl]
curl.cainfo = "[PHP_ROOT]cacert.pem"

※私みたいにプロジェクトごとにxammp環境作ってるようなら共通で使いまわす方が楽かも

PS.
念のためcreate.pemについて提供元を確認してみた。
WindowsでCURLでCURLコマンドを落としたとこでした。

pemの内容については
https://curl.haxx.se/docs/caextract.html
で確認できる。

色々あるsymfony2のインストール方法

色々調べてみたところホントに色々な入れ方やらパッケージ?があるみたいなのでとりあえず整理します。

composerを使ったやり方

php composer.phar create-project [パッケージ] [インストール先のpath] [バージョン]

例)php composer.phar create-project symfony/framework-standard-edition /path/to/webroot/Symfony 2.3.0

php composer.phar search [文字列] 

で探してみたけど数が多すぎると全部は出してくれないっぽいので

[パッケージ]と[バージョン]はPagkagistで探す方がいいらしい。

ちなみに、composerはcomposer.jsonってファイルでパッケージ等を設定して

php composer.phar install

ってする方法もあるようで、むしろこっちが一般的?

symphony.pharを使ったやり方

php -r "readfile('https://symfony.com/installer');" > symfony.phar
php symfony.phar [コマンド] [インストール先のpath] [バージョン]

例)
php symfony.phar new symfony2 2.3.0
php symfony.phar demo symfony2 2.3.0

newとdemoの違いはよくわからない。。。

helpを見るには

php symfony.phar