リッチなJSアプリケーションを作成していますが、JS/PHPの構造について幅広いアドバイスをお願いします。この質問をどのように分割するかわかりません。質問が多すぎる場合は申し訳ありません。私は情報過多に苦しんでいます!
JSが単一のPHPファイルからJSONオブジェクトを要求することを期待しています。PHPが簡潔で効果的なリクエストに応答するための、最小限で効果的なパターンが必要です。おそらく、JSは、データベースにクエリを実行してJSONをクライアントに返すモデルのようなオブジェクトを呼び出します。
PHP側にとって良いパターンは何でしょうか?クライアントからの命令を解析する大きなswitchステートメントと関連データが乱雑に含まれているPHPファイルをハッキングしました。1つのリクエストに複数の命令を含めることができます。たとえば、javascriptはリクエストを送信します。
$.ajax({
url: '/ajax.php', dataType: 'json',
data: {instructions: [{
instruction: "newPerson",
data: {
name: person.name,
email: person.email
city: person.city
}
}]},
success: callback, error: ajaxFail
});
コールバックは、このリクエストまたは他のリクエストからPHPが返すオブジェクトを処理するグローバルハンドラーになります。たとえば、上記は、PHPによって生成された人物IDがDBに挿入された新しい人物オブジェクトと、そのIDを持つ都市オブジェクトを受け取る場合があります。他のリクエストもそれらのオブジェクトを返す可能性があるので、単一のハンドラーは理にかなっていますか?(1つの質問は、javascriptが返されたオブジェクトを送信された挿入にどのように関連付けるかです)
PHPページコードに恥ずかしいのですが、次のようになります。
$return = array();
$instructions = $_REQUEST['instructions'];
foreach ($instructions as $instruction){
switch($instruction['instruction']){
case 'findPoeple':
$data = $instruction['data'];
$res = DB::query("select player from person where player like '%". DB::esc($str) ."%'");
$return['players'] = array();
while ($row = DB::fetch($res)){
$return['players'][] = $row['player'];
}
break;
case 'loadAllPeople':
// similar code
break;
case 'newPerson':
// similar code
break;
default:
die("command '$command' not recognised");
break;
}
}
echo json_encode($return);
明らかに、これには何を変更するかを言うにはあまりにも多くの間違いがあります!しかし、私が探している最終結果が何であるかをかなり明確にしました。OOPを使用してこれを立派な方法で実装するJS/PHPのこの種のアプローチを具体的に示す簡潔なパターンを誰かに教えてもらえますか?
MVCは、豊富なJSアプリが可能になるまで私には理にかなっており、境界は非常にぼやけているように見えます。
ありがとうございました!