簡単な質問...私は MVC 構造を使用してサイトを構築しています (かなり大きいため、メンテナンスに役立ちます。Javascript/AJAX フレンドリーなユーザーのために、いくつかの楽しい AJAX 関数を統合し始めています。
私は組織について非常に神経質なので、Ajax PHP ハンドラーを、論理的で、安全で、(願わくば) 分離された方法で保存したいと考えています。
あなたはどのように整理していますか?ベストプラクティスはありますか?
簡単な質問...私は MVC 構造を使用してサイトを構築しています (かなり大きいため、メンテナンスに役立ちます。Javascript/AJAX フレンドリーなユーザーのために、いくつかの楽しい AJAX 関数を統合し始めています。
私は組織について非常に神経質なので、Ajax PHP ハンドラーを、論理的で、安全で、(願わくば) 分離された方法で保存したいと考えています。
あなたはどのように整理していますか?ベストプラクティスはありますか?
ベストプラクティスはありません。これは、PHPプロジェクトで、コントローラー構造の外部に多数の単一ファイルが存在するため、物事がすぐに軌道に乗らない場所の1つです。フレームワークのドキュメントをチェックして、アプリケーションを構築するためのますます一般的な方法として、この分野でアドバイスを提供しているかどうかを確認してください。
これが実際に処理されるのを私が見た最良の方法は、ajaxリクエストをMVCの他のリクエストと同じように扱うことです。リクエストのコントローラーアクションを作成します。プロジェクト/個人設定のサイズに応じて、ajaxリクエスト用に個別の論理コントローラーを作成するか、既存のコントローラーとajaxアクションをグループ化できます(オプションで、アクション名に「ajax」プレフィックスまたはサフィックスを付けます)
class IndexController extends BaseMvcController{
public function indexAction(){}
public function ajaxuserinfoAction(){}
}
//また
class AjaxController extends BaseMvcController{
public function userinfoAction(){}
}
それでも、リクエストの表示部分を処理する方法は残ります。私はstdClassオブジェクトを作成し、それをで使用することの大ファンになりましecho json_encode($object);
たheader('Content-Type: application/json');
。
MVCフレームワークがサイトのレイアウトの抑制をサポートしている場合は、ビューで応答出力を構築できます。そうでない場合は、このような場所に単純なヘルパー関数を追加しても同様に機能します
protected function outputJsonForAjax($object)
{
header('Content-Type: application/json');
echo json_encode($object);
exit;
}
私にとって最善の解決策は、ページ生成と ajax 要求の両方を処理する index.php フロント コントローラーを用意し、ページを作成する同じファイルで ajax 処理を行うことです。
これにより、すべてが簡素化され、統一された構造が得られます。
jqueryまたは別のフレームワークを使用する場合は、既存のメソッド内の$_SERVER['HTTP-X-REQUEST-BY']ヘッダーを使用してリクエストをネイティブに区別できます。このように、同じ場所でajaxと通常のリクエストがあるため、構造的な変更はありません。
鉱山は指定されたフォルダに保存されます_ajaxHandlers
。このフォルダには)のようなファイルが含まれていますupdatePageList.php, deletePage.php, etc
。
私はajaxの概念にも比較的慣れていないので、これが最善の方法かどうかはわかりません:)ファイルの保存/処理を改善するための提案も私によって適用されます。
dirnameの下線は、目的別にソートされたアルファベット順のフォルダーが好きだからです。私の構造では、下線が引かれたフォルダ名はsystemdirsと見なされます。
私も同じことをします.
ajax-updatestatus.php
ajax-managemessages.php
しかし最近、新しいフォルダーを使用するようになりました