PHP で単純な RESTful API を作成しようとしています。これを行う私の目標の 1 つは、php OOP プロジェクトへのアプローチ方法をよく理解することです。JavaScript では、カプセル化や継承などに問題はありません。通常、すべてをネストする単一のオブジェクト (おそらく名前空間として) から始めますvar appName = {}
。init
より単純なオブジェクトは、単なるメソッドのグループである可能性があります...そして、物事を設定するための関数のようないくつかの典型的なニーズがありますexecute/run
フローを詳細化できる機能。そこで、発生するすべてのことを要約し、詳細化し、詳細化するなどの一般的な関数をいくつか使用するのが好きです。これにより、結果がどのように生成されるかをいつでも簡単に確認でき、必要に応じて詳細をさらに調査できます。また、各関数が依存関係をどのように取得するかなどを心配する必要がないように、すべてを独立させています。おっとphp。
私は先に進み、私がやろうとしていることを示すためだけに、js で簡単な API を書きました。もっと良いかもしれませんが、これは簡単な例です。http://jsbin.com/AmIfApO/3/edit PHP でこの機能を実現するために何週間も試みましたが、失敗、失敗、失敗しました。私はそれを機能させることができますが、それはひどいコードであり、ベストプラクティスを使用して作成することを決意しています. 怠け者に見えないようにするために、ここに私が試した最新のphpリライトがあります....いつものように惨事に終わったhttp://pastebin.com/cKw9YeVz。
js を使用することで、最終的に適切な例を見つけ、適切なアドバイスを得ることができ、アイデアがかなり明確になりました。php でこれがどのように行われるかという基本的な設計フローだけでも、学んだことすべてを結び付けるのに役立つと思います。何かがクリックされていません。ここでどのようなクラスが必要か、または物事をどのように分割するかの例を教えていただければ、とても感謝しています.
編集:私が最も苦労していることをさらに明確にするために、アプリケーションの「骨」にすぎません。同じことを達成する方法はたくさんあります。クラスと継承で物事をパッケージ化する方法は理解していますが、それらをどのように使用すべきかわかりません。これが私が探しているものの例です。これはどのように見えるべきですか?
$diC = new diC(); //dependency injection container
$router = $diC->get('router');
$api = $diC->get('api'); //this class probably makes no sense
if (!$router->collection) { //api/collection - no data requested
$data = $api->defaultResponse(); //what ought to take care of this?
}
else {
$route = $diC->get("collection_{$router->collection}"); //instantiate the class that will handle the collection request
$method = ($router->item) ? "{$router->verb}_item" : $router->verb; //$route->GET or $route->GET_item (for api/collection/item)
$data = $route->$method(); //get data for the request
}
$output = $api->format($data, $router->type); //again...what should be in charge of formatting the data?
echo $output;
$errors = []
上記のコードが実際にどのように見えるべきかについての手がかりがないことに加えて、アプリケーションのほぼすべての部分が追加できるエラーの配列 ( ) も必要です。それを利用可能にしてデータを返すクリーンな方法がわかりません。すべてが依存しているエラー クラスは良くないようです。