Phalcon Framework

皆さんいかがお過ごしでしょうか、パッションの伝道師こと鰯です。

PHP Con 2013 まで、あと2週間ぐらいとなったわけですが、

一部で話題沸騰の Phalcon は無しなのか?と疑問に思う今日この頃です。

というわけで、PHP Con で Phalcon のセッションが無くても、我が道を行かせてもらいます。

サービスプロバイダ – Service Provider

コードの共通化や再利用性は、プログラマにとっては重要な課題のひとつです、

Silex や Laravel といった最近のフレームワークでも、Service Providerという名称で、

より柔軟にコードの再利用ができるようになっています。

今回は、そのサービスプロバイダを、Phalconでも実装できるよ!!というお話です。

Phalcon流 サービスプロバイダ

Phalcon では明示的に Service Provider という名称で記載はありませんが、

v1.2 より追加された、Phalcon\Mvc\Application にあるbootイベントを利用して実装できます。

今回は、AWSのgithubレポジトリで公開されている、AWS Service Provider for Silex を例に

Phalcon向けに実装しなおしたものを紹介します。

続きを読む

Silex の Service Provider の実装

まずは、SilexのAWS Service Providerの実装内容を覗いてみましょう、

SilexやLaravelでは、Applicationクラスのregister関数で、サービスコンポーネントの登録を

行います。以下は、SilexのAWS Service Providerの実装内容です。

Phalcon の Service Provider の実装例

それでは、さっそくPhalconのbootイベントを利用して実装してみましょう、

Phalconでは、register関数は無いため、bootイベントのみでサービスの登録を行います。

実装内容的には、ほぼ変わりなく、非常に簡単に実装できました!

今回移植した、Phalcon向けの AWS Service Provider は、github上にコード置いてますので、

参考にして、他のサービスプロバイダも、ぜひ実装してみてください。

また、Aws\Phalcon\AwsServiceProviderとして、Packagistにも登録してあるので、

実際に利用することもできますので、ぜひ利用してみてください。

github: AWS Service Provider for Phalcon
packagist: aws-sdk-php-phalcon

Phalconでの利用方法は、こんな感じになるかと思います。

ちなみに、今回のbootイベントに関しては、以前、Phalconの使いはじめの時に、

Service Provider欲しいよなぁと思って提案したら、bootイベント実装してくれたって感じです。

そのあたりのやり取りは、こちらのIssueで確認できます。

[NFR] Add service provider register

というわけで、これから、さらにPhalconは熱くなってくるよっ!!

あわせて読みたい記事