0

CodeIgniter を使用したコードは次のとおりです。

私が遭遇する問題:

  1. コントローラーにはいくつかの関数呼び出しビューがあり、分離されていますが、ロジック自体と非常に近いため、コントローラーが結果を表示するためにJSONまたはXMLで返すように変更すると、非常に問題が発生するようです。

  2. 多くの方法のように見えますが、それぞれが別のものに依存しています。

  3. コードを追跡するのは難しいと思います。

いくつかの提案をお願いします。※コントローラクラスのみですのでご注意ください。読み込みビューは実際にはビューのデータを準備するものであり、ページをレンダリングしません。また、doXXX 関数呼び出しモデルはモデル メソッドのみを使用し、SQL ステートメントはありません。MVCは分離されていますが、コントローラーにもビューやモデルに関連する機能があり、かなり面倒です。

class User extends CI_Controller
{

public function register()
{
 //check is logged in or not 
 //if not logged in , show the register page

}

public function show_register_page()
{
//generate the UI needed data , and call the view to render, and will the user will post back a valid_register function
}

public function valid_register()
{
//do all the valid logic, if success, 
//do the do_register
//if fail, valid_register_fail
}

public function valid_register_fail()
{
 //check is logged in or not 
//show the valid register fail page
}

public function show_valid_register_fail_page()
{
//generate the UI needed data , and call the view to render
}

public function do_register()
{
//insert data in the db, the Model will be called
//if something go wrong in db, show the error page
//if everything is success, show the register success
}

public function show_db_error_page()
{
//generate the UI needed data , and call the view to render
}

public function show_register_success()
{
//generate the UI needed data , and call the view to render
}

}
4

1 に答える 1

1

1.コントローラーにはいくつかの関数呼び出しビューがあり、分離されていますが、ロジック自体と非常に近いため、コントローラーがJSONまたはXMLで返して結果を表示するように変更すると、非常に問題が発生するようです。

コードの編成方法と、実際にビュー (テンプレート) に渡すものによって異なります。それが適切に構造化されていれば、HTML 用に 1 つのビュー、XML 用に 1 つ、json 用に 1 つのビューを持つことができますが、json は通常ビュー変数をエンコードするだけです (json_encodeドキュメントを参照)。

2. 多くの方法があるように見えますが、それぞれが別のものに依存しています。

まあ、やらないでください:)名前は、「コード化」したかったようです。離して保管してください。これらの関数を実際にユーザーが実行するアクションにします。

register - that action handles the registration process

必要なものを処理するログイン コントローラーを作成します。

login - the login action
lost_password - the lost password action
register - the registration action
activate - the registration activation action

他のすべてはそこに属していません。アクションで何らかのページを表示する必要はありません。コントローラー自体がどのビューを選択するかを決定できます。

次に、データベース エラーを表示する必要はありません。CIはそれを処理します。必要なものだけを入れてシンプルに。これにより、メソッドとその中のコードの数も減らすことができます。

3. コードを追跡するのは難しいと思います。

もちろん。よくわからない名前の関数が多すぎます。物事をシンプルに保ちます。簡単ではありませんが、名前を付けたり、全体的なロジックを減らしたりするのは簡単なことではありません。

于 2011-08-28T17:52:50.793 に答える