技術情報

PHPフレームワーク「Flight」とは

PHPWebアプリケーションフレームワーク「Flight」について紹介します。

概要

「Flight」とは

Flightは、PHP用の高速/シンプル/拡張可能なイベントベース/コンポーネントベースのオープンソースマイクロフレームワークです。

開発者に対して、非同期で独立性の高いコンポーネントを定義する機能を提供しており、デバッグ/テスト/イベントハンドリングなどを容易にするフレームワークです。迅速かつ容易にRESTfulなWebアプリケーションを構築できます。

PHPマイクロフレームワーク「Slim」と同様な基本的な機能を有しています。

基本説明

Flightは、「An extensible micro-framework for PHP(PHP用の拡張可能なマイクロフレームワーク)」です。

「EcmaScript 5」機能のために「ES5-shim」を利用し、DOM操作には「jQuery」を利用します。「PHP 5.3以降」が必要です。

「MITライセンス」でオープンソースリリースされています。

コア部分のソースは、わずか50KB程度しかなく、定型フォーマットのコメントも入っているため、ソース全体を読むのも苦になりません。

経緯

2013年、Twitterは、自社サービスで利用しているJavaScriptフレームワーク「Flight」をオープンソース公開しました。

 

主な機能

ルーティング

ルーティングは、コールバック関数を使用して、URLパターンを照合することによって行われます。

マッピング

フレームワークには、デフォルトコンポーネントのセットが付属しています。それら既存のクラス/メソッドをオーバーライドできます。また、メソッドをマップする独自クラスを作成できます。

オーバーライド

オーバーライド機能により、独自のニーズに合わせて、デフォルト機能を上書きできます。

フィルタリング

メソッドが呼び出される前と後でフィルタリングできます。フレームワークがデフォルトで用意しているメソッドだけではなく、独自に作成したすべてのカスタムメソッドに対してフィルタリングできます。

変数

アプリケーションのどこでも使用することができるように変数を保存できます。

ビュー

デフォルトでいくつかの基本的なテンプレート機能を提供しています。

エラー処理

すべてのエラー/例外をキャッチして対処できます。

リダイレクト

要求をリダイレクトして、新しいURLに渡すことができます。

リクエスト

単一オブジェクトへのHTTPリクエストをカプセル化します。

HTTPキャッシング

HTTPレベルのキャッシュのためのビルトインサポートを提供します。クライアントから同じリソースを要求された場合、ローカルのキャッシュデータを使用できます。

JSON

「JSON」と「JSONPレスポンス」を送信するためのサポート機能を提供します。

コンフィギュレーション

設定値を設定することにより、Flightの特定の動作をカスタマイズできます。

コアメソッド

理解しやすい形の拡張可能なコアメソッドで構成されています。

 

主な特徴

View+Controllerフレームワーク

いわゆるMVCフレームワークとは異なり、「Model」は存在せず「View+Controller」の構成に相当します。

シンプルな構成ですが、ルーティング、テンプレート、フィルタリング、エラーハンドリング、リダイレクト、HTTPリクエストなどの機能を備えています。

コンポーネント独立性

Flightは、コンポーネントが高度に分離されたフレームワークです。

各コンポーネントはAMD(Asynchronous Module Definition)のような書式で定義し、DOMのノードにバインドしていきます。ノードがイベント呼び出しされた時に、目的の機能を提供します。

コンポーネントは、トリガー/イベントサブスクリプションによるコミュニケーションが可能です。この仕組みにより、コンポーネント(コンポーネントAPI)は、他のコンポーネントとは完全に分離されることで高度な独立性を持ちます。

開発者は、他のコンポーネントに依存することなく、非結合のコンポーネントを作成し、テスト/デバッグできます。

ミックスイン

Flightには、「ミックスイン」という機能があります。JavaやC#のようなOOP言語における「インターフェース」に似ている機能です。

 

まとめ

Flightは、高度なコンポーネント独立性を維持する機能により、テスト/デバッグ作業を簡潔に行うことができ、拡張しやすいWebアプリケーションを開発できるマイクロフレームワークです。

PHPWebアプリケーションフレームワーク「Flight」について紹介します。

 

Flightを使ったオフショア開発は、こちらへ

About the author: matsumoto