もうLibraryをダウンロードして、展開しては古い?!vender系ライブラリ管理が出来る、Composerを使ったてみた!
Composerってなんなの?
ComposerはRubyのBundler、nodeJSのnpmみたいな物 PHPのLibraryって、今まではPearを使ったらりcurlで取得したり、wget..だったり 果ては、作業PCにダウンロードして転送したりとか色々面倒だったのが、Composerを使うことにより、バージョン管理、環境構築時のパッケージ共有などが用意に行える様になるものです。
色々端折ってますが
導入
rootディレクトリにcomposerをインストール
curl -s http://getcomposer.org/installer | php
とすると、composer.pharがダウンロードされます。 今後はコレを使ってパッケージ管理を行っていくことになります。
では、パッケージをインストールしてみよう!
今回は、S3への画象アップロードを行う為に必要な、AWS SDKを導入する為にComposer](http://getcomposer.org/)を使い始めましたので、それを例に進めます。
composer.pharと同階層に次のファイルを作成します。 composer.json
中に以下の内容を記述
{ "require": { "aws/aws-sdk-php": "*" } }
用意が完了したら、インストールコマンドを実行
php composer.phar install
すべてが完了すると、vendorというディレクトリが出来て、その中にLibraryがインストールされているはずです。
autoload.php aws/
折角インストールしたので、使ってみよう
<?php require_once 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Common\Enum\Region; use Aws\S3\Exception\S3Exception; use Guzzle\Http\EntityBody; $ACCESS_KEY = 'あくせすきー'; $SECRET_ACCESS_KEY = 'シークレットキー'; // キー、シークレットキー、リージョンを指定 $client = S3Client::factory(array( 'key' => self::$ACCESS_KEY, 'secret' => self::$SECRET_ACCESS_KEY, 'region' => Region::TOKYO)); //フォームからアップロードされたファイル $tmpfile = $_FILES["fileUpload"]["tmp_name"]; //ファイルがアップロードされていない場合は終了 if (!is_uploaded_file($tmpfile)) { die('ファイルがアップロードされていません'); } // バケット名 $bucket = "バケット名"; // アップロード先のキー(ファイル識別子) $key = 'test.jpg'; try { $result = $client->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => EntityBody::factory(fopen($tmpfile, 'r')), )); } catch (S3Exception $exc) { echo $exc->getMessage(); }
これで、fileUploadという名前で送信された画像データが、S3上にアップされます!
TOKYO以外に上げるには?
vendor/aws/aws-sdk-php/src/Aws/Common/Enum/Region.php
に様々なREGIONの定数が用意されていますので、参考にして変更してみましょう。
使ってみて
comporser便利だなと思いました。 ちなみにコレ以外にも、twigとかphpunitとかもComposerで管理を始めました。 symfonyだと最初からComposerを使うんだろうけど、他のフレームワークだったので、めっちゃ便利と思えました! 普及活動していきますよ!