この記事では、
Silex PHPフレームワーク上にシンプルな
RESTアプリケーションを作成します
Silexインストールから始まり、いくつかのアプリケーション経路の作成で終わります。
Silexは、Symfonyの作成者によるPHPマイクロフレームワークであり、その大部分に基づいて構築されています。 次の
ハブから詳細を知ることができます
さあ始めましょう
この例では、
toyshopというディレクトリを使用します
Silexをインストールする
Silexをインストールする方法はいくつかありますが、これには
Composerを使用しましょう。
作業ディレクトリ内で、次のコマンドを実行します。
composer require silex/silex ~1.1
このコマンドでは、Composerコマンドを使用して次のことを行います。
requireは新しいパッケージをプロジェクトに追加しますsilex / silex形式プロバイダー(ベンダー)/パッケージ(パッケージ)のパッケージの silex / silex名~ 1.1パッケージバージョン、〜1.1は、> = 1.1、<2.0を意味します
このコマンドを実行すると、Composerは要求していないライブラリもインストールすることがわかります。Silexはこれらのライブラリを正しく動作させる必要があるため、心配する必要はありません。
コマンドの実行が終了するとすぐに、以下に示す次のファイル構造が得られます。
toyshop/ composer.json composer.lock vendor/ ...
すべてのSilexコードはベンダーフォルダー内に保存され、2つのComposerファイルにはインストールされているパッケージとライブラリバージョンに関する情報が含まれています。
Composer.json
composer.jsonの内部を見てみましょう。次のようになります。
{ "require": { "silex/silex": "~1.1" } }
Composer.lock
このファイルには、インストールされているすべてのパッケージとそのバージョンのリストが含まれています。 これは、プロジェクトをリポジトリにアップロードするときに
vendor/フォルダを
commit必要がなくなることを意味するため、非常に便利です。アプリケーションが正しく動作するために必要なすべてのライブラリをこのファイルに基づいてインストールできます。
composer.lockファイルと
composer.lockファイルをリポジトリにアップロードするだけで、リポジトリからコードが抽出されるとすぐに、
composer installコマンドを実行するだけで、
Composer指定されたバージョンの必要なライブラリをインストールします。
ルート作成
このアプリケーションはおもちゃ屋なので、必要なものについて考えてみましょう。 私たちのサイトを訪れる人はギフトを見たいと思うので、ギフトのリストを取得できるルートを作成しましょう。
index.phpファイルを作成しましょう。 次のようにコードを追加します。
<?php require_once __DIR__.'/vendor/autoload.php'; $app = new Silex\Application();
これで、2つのルートが宣言されました:
/および
/{stockcode}ルート/
これは、すべてのおもちゃのリストを取得するルートです。 このメソッドは、指定されたものを
JSONでエンコードし、エンコードされたデータをリクエストへの応答として返し
JSON 。
匿名関数が
$toys配列にアクセスできるようにするには、匿名関数定義の最後に
use($toys)を追加してインポートする必要がありますが、{を開く前に。
ルート/{stockcode}
これは、特定の玩具に関する情報を取得するためのルートであり、
stockcodeパラメーターによって識別されます。 ご覧のとおり、この関数はこのルートで少し複雑なヘッダーを使用します。
use($toys)て、いくつかの変数を関数自体に渡します:
Silex\Application $app $stockcode.Silex\Application $appはSilexアプリケーションオブジェクトであり、その助けにより、間違ったストックコードが渡された場合に美しい404エラーページを表示できます。
$stockcodeは、情報を受け取りたいおもちゃの識別子です。 ご覧のとおり、この変数は{stockcode}に対応しています。これは、当社が説明しているルートにあります。
アプリケーションをテストする
index.phpを介してすべてのリクエストをルーティングするようにWebサーバーを設定した後、次を使用してルートに移動できます。
toyshop toyshop/00001 toyshop toyshop/00001で、これらの各クエリが返す結果を確認します。
例えば
toyshop/00001 toyshop/00001は以下を返します:
{"name":"Raspberry Pi","quantity":"13","description":"...","image":"raspberry_pi.jpg"}
応答は、オンラインストアまたはモバイルアプリケーションでの使用に適した便利な形式で返されます。 実行する必要があるのは、このデータに対してjson_decode関数を実行し、HTMLなどの便利な形式でデータを表示することだけです。
なぜSilexなのか?
いい質問です。
回答:それはマイクロフレームワークであるため、自分の好みのスタイルで書くように強制することはなく、Silexで動作するようにプログラミングスタイルを変更する必要はありません。 必要に応じて、Slim、その他のマイクロフレームワーク、またはSymfonyやZendなどの本格的なフレームワークを使用できます。
翻訳者からのメモ
Silexや、PUT、POST、DELETEなどの他のタイプのHTTPリクエストでも簡単に作業できることを付け加えます(下の例)
$app->post('/toys', function (Silex\Application $app) use ($toys) {
したがって、本格的なRESTアプリケーションを作成できます。