SONICMOOV Googleページ

PHP Phalcon 噂の爆速フレームワーク、はじめの一歩。

PHP Phalcon 噂の爆速フレームワーク、はじめの一歩。

  • このエントリーをはてなブックマークに追加

こんにちわ、パッションの伝道師こと鰯です。 今月の私の標語は『速いは、正義!!』です。

Webフレームワークは、いつの時代も、速さと戦ってきました、最近ではWebフレームワークの ベンチマークサイトまで登場して、いかに、速さに対する関心が高いかというのが伺えますね。

そこで、今PHPで速いフレームワークと言えば “Phalcon“!!

もちろん、他にもいくつもの速いフレームワークはあるのですが、PhalconはFull-Stackでありながらも、際立つ速さを持っているというのが他と違うところです。

ですが、C言語で実装された、PHPのExtensionというわけで、速くて当然と言えばその通り。

しかしながら、昨年には、『Facebookが開発、運用ともにHHVM/JITを使用開始』なんてニュースもあり、PHPの速さに対するアプローチの仕方が、新たな時代へ突入した感じがします。

もともと同様の取り組みとして、Yaf というフレームワークもありましたが、古くからあるため、 Namespaceによる実装でなかったりと、今使うにはちょっとという感じがします。

Phalconは昨年ぐらいから登場しはじめ、もちろん、Namespaceによる実装がされており、PHP5.4でも、もちろん動きます。

そこで、Phalconをはじめるにあたって、自分がつまずいたところを紹介しつつ、最初の一歩を踏み出せるように、こうすると幸せになれるよねというところを、いくつかご紹介します。

続きを読む

1. チョ… 補完できねぇーしっ!!

はい、そうです、補完なんて出来るわけありません、だってC言語で作られてるエクステンションなんですから。

だからと言って、補完ができないわけではございません、ちゃんとそのためのソリューションが提供されております。

本日ご紹介するソリューションはこちら、『Phalcon Devtools』!!

こちらのレポジトリにあります、ide/ フォルダの中には、ちゃんとバージョンごとのPHP版Phalconがっ! https://github.com/phalcon/phalcon-devtools/tree/master/ide

というより、Interfaceなどの公開されてるAPIの定義ファイルです。

これをお使いの開発環境のインクルードパス等に設定しておけば、 あら不思議(不思議ではありません)、普通に補完できるようになりますっ!

2. PHP5.4 Built-in server で Beautiful URI

ドキュメントではApacheの例が記載されており、index.php?_url=$1 とRewriteで実現する方法が記載されています。

となると、Built-in serverでは http://localhost:9000/index.php?_url=$1のリクエストで開発せなアカンのかいっ! BeautifulでないURIは目に毒です、なので変更しましょう。

$router = $this->getDI()->get('router');
$router->setUriSource(\Phalcon\Mvc\Router::URI_SOURCE_SERVER_REQUEST_URI);
$router->removeExtraSlashes(true);

ref: http://docs.phalconphp.com/en/latest/reference/routing.html#uri-sources はい、これでBeautiful URIの設定完了です、美しいって本当に良いですねっ!! ついでに、removeExtraSlashesも設定しておくと幸せになれそうなので、そちらも追加。

3. 設定を YAML で書きたい…

えぇ、そうですね、今やWeb Frameworkのデファクトスタンダードと言っても過言ではないYAML

パフォーマンスのことを考えるなら、INIファイルも仕方ないですが、

それでもYAMLが良いんです!!

PhalconのConfigはAdapterパターンで実装されているので、容易に別のファイル形式の読み込みでも実装が追加できます。

それでは、さっそく私の自作したAdapterをご紹介… と言いたいところですが、作ってから気づきましたが、、、。

すでにあるじゃんっ!!

同じことやってるしっ!!

ということで、こちらをご紹介、みんな考えることは同じですね、、。
https://github.com/phalcon/incubator/tree/master/Library/Phalcon/Config/Adapter

Incubatorにはその他にも、いくつかのライブラリが提供されておりサードパーティからの提供がされております。

一度、一通りご覧になることを推奨します、、。
https://github.com/phalcon/incubator

4. Voltテンプレートで…

VoltはSymfony2のtwig互換というか、もともとjinjaインスパイアなので、同じですね。

ただ、Voltはまだ、twigやjinjaと同等までの機能は実装されていないようです、、。

それでも、テンプレートエンジンがC言語で実装されているというのは魅力的ですよね。 さっそくテンプレートを…

<span>{{ product.name|e }}</span>

はい、これ落ちます。 escapeのフィルターですが、phalcon v1.1.0ではsegmentation faultで落ちます。

escapeとか、そんな基本的なところで落ちるとか…orz

ということで、フィルターを自前で実装しましょう。 三項演算子にしてるのは、null渡すと、またしても落ちちゃったためです、、。

$compiler = $volt->getCompiler();
$compiler->addFilter('h', function ($resolvedArgs, $exprArgs) {
    return 'htmlspecialchars('.$resolvedArgs.'?:\'\')';
});

ref: http://docs.phalconphp.com/en/latest/reference/volt.html#id2 あとは、こちらも落ちます。

{% block content %}

<h2>コンテンツ</h2>

  {% block subcontent %}{% endblock %}

   hogehoge

{% endblock %}

block内でのblockは、まだ使えません、v1.2.0で対応予定です。

というところで、今回はここまでにしておきます、ってか、最後の方は落ちてばっかりじゃんっ!

大丈夫です、今のところ落ちたのは、これぐらいで、他は良い感じです!!

v1.1.0も、そこそこ使えます、v1.2.0ではより多くの機能が実装予定!!

RoadMapに今後対応予定や実装中の内容が一覧されているので、ご参考までに
https://github.com/phalcon/cphalcon/wiki/Roadmap

バグレポートや過去の質問などは、githubのISSUEやStackOverflowにいろいろ載ってるので、つまずいたら、 まずは、探してみることをオススメします。
http://stackoverflow.com/questions/tagged/phalcon
https://github.com/phalcon/cphalcon/issues?state=open

そんな、Phalconですが、やっぱり未知のバグについては、自分で調べないといけません。

次回は、そんな、Phalcon のバグを調べる時に役立つ、gdbの扱い方などをご紹介できればと思います。

それでは、良いPhalconライフをっ!!

あ、あと、最近 Google App Engine(GAE) でPHPが使えるようになりましたが、GAEの機能リクエストにPhalconがありましたので、ぜひとも、このチケットにスターを付けてもらえると、GAEでPhalconが使えるようになるかもしれないので、お願いします!!!
https://code.google.com/p/googleappengine/issues/detail?id=9336

  • このエントリーをはてなブックマークに追加

記事作成者の紹介

(システムエンジニア)

新規事業推進部のシステムエンジニアこと鰯(イワシ)です。最近ハマっているのは、AWSとPhalconです。好きなフォントは、Monaco13ptです。

関連するSONICMOOVのサービス

システムエンジニア募集中!

×

SNSでも情報配信中!ぜひご登録ください。

×

SNSでも
情報配信中!
SONICMOOV Facebookページ SONICMOOV Twitter SONICMOOV Googleページ
システムエンジニア募集中!

新着の記事

mautic is open source marketing automation