もう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を使うんだろうけど、他のフレームワークだったので、めっちゃ便利と思えました! 普及活動していきますよ!