1

私はCodeigniterを初めて使用し、先月ほどOOPを初めて使用しました。私は遊んでいて、10個の投稿のリストを含むブログページを作成しようとしており、それぞれに異なる機能と可能性があります.

たとえば、将来的には、ログインしているユーザーであるか、投稿の作成者であるかなどに応じて、投稿の下にさまざまなボタンを表示できるようにしたいと考えています。

新しいクラス「blog_posts」を作成し、ページに表示するすべての投稿に対してそのインスタンスを作成するのが最善でしょうか? お気に入り:

$this->load->library('blog_posts'); // in library or models, I'm not too sure?
$new_inst = new blog_posts;
$new_inst->show_post();

私の最終目標は、必要に応じて将来的に簡単に更新、変更、または変更できるようにすることです。オンラインで簡単なチュートリアルを見てきました。

http://blog.pisyek.com/2011/03/create-a-simple-blog-using-codeigniter-2-0-part-1/

しかし、将来、それらが簡単に更新および変更されるとは思えません。クラスの新しいインスタンスを使用する他の多くの CI アプリを見たことがないので、CI には別の方法があるのではないかと考えています。新しいインスタンスは CI でよく使用されますか?

4

1 に答える 1

0

コントローラーから始めます。Codeigniter を使用すると、モデルで実行できることはすべてコントローラーで実行できます。開始する最も簡単な方法は、コントローラーにメソッドを配置し、単純なビュー ファイルを設定することです。

基本が適切であることを確認するために、常に簡単な健全性チェックを行ってください。コントローラーをセットアップし、テキストをエコーアウトします。

コントローラーで次を試してください。

  • アクティブ レコード コマンドを使用してデータベースからブログ投稿を取得する
  • ブログ投稿の結果を $Data に渡します
  • 各ステップで、コントローラーで何かをエコーし​​て、それが機能していることを確認します

次に -- $Data を使用して、ブログの結果をビューに渡してみます。

動作して基本を理解したら、メソッドをモデルにプッシュし始めます。リファクタリングしてクリーンアップすると、コントローラーは「薄く」なります。

通常、ブログ投稿の場合、ブログ投稿を返す 1 つのモデルがあり、insert / update / delete メソッドもある場合があります。ブログの投稿を表示するだけのパブリック ブログ コントローラーを用意する方が通常は理にかなっているからです。次に、別のブログ管理コントローラーです。これは、ログインしているユーザーのみが利用できます。

これら 2 つのコントローラー - 同じブログ モデルを共有できます。たとえば、管理画面にブログの投稿を表示するには、公開ページに投稿を表示するのと同じ方法を使用できます。一方、作成/更新/削除メソッドを持つ管理者ブログ モデルがあるかもしれません。

こうすることで、最初からユーザー ロールを非常に明確に分離することができます。公開ブログを閲覧しているユーザーは、投稿を削除できません。パブリック ショー ブログ クラスは、編集を「担当」しません。

これは私が取り組んでいるものです。ブログをデモンストレーションする通常の方法は、すべてのメソッドをまとめることです。これは、「ブログ投稿で何ができるか」という点では理にかなっていますが、ユーザーの役割という点では意味がありません。

OK 次へ - create メソッドと update メソッドと delete メソッドに取り組みます。

次に、ログイン方法を作成してみてください。ログインプロセスを別のコントローラー/モデル/ビューにします。

最終的には、ブログ管理クラスのコンストラクターで、ユーザーがログインしていることを確認するメソッド呼び出しを 1 つ持つことができます。それ以外の場合は、ユーザーをログイン ページにリダイレクトします。そうすれば、ビューファイルなどを何度もチェックして、それらが承認されていることを確認する必要はありません。

(net tuts Web サイトの無料の codeigniter チュートリアル シリーズを強くお勧めします)


よりとりとめのない:

アクター (ユーザー、ロール) の観点からプロセスを見ると、制御チェーンがどうあるべきかを明確にするのに役立ちます。すべてのブログ投稿を削除する権限を持つ管理者のような非常に重要な役割 - システムはクラスのトップでその役割を認識している必要があります。

最良の「最悪の例」は、「これはスーパー管理者ですか?」という質問がある場合です。ビューコードをチェックインします。ビューは、管理者の役割について何も認識してはなりません。しかし、ビューファイルに管理者ロールへの参照を入れると、さらに悪いことに、その管理者ロールを何らかの方法で変更したい場合はどうなりますか? ここで、すべてのビュー ファイルに移動する必要があります。

クラス名とメソッド名 - URL 内のビジネス、クラッド、フィールド、またはその他の種類のビジネス情報を明らかにしない方向に進んでいます。名詞も動詞も ID もありません。アプリへの公開 URL の「ドア」はほとんどなく、できるだけシンプルにします。

すばらしいのは、codeigniter を使用すると、メソッドを非公開にすることが非常に簡単になることです。重要なページの場合: クラス内のパブリック インデックス メソッドのみをリダイレクトに使用し、他のすべてのメソッドを非公開にします。

プライベート メソッドに直接つながるルートを使用します。または広い名前のパブリック メソッド。成功した場合は、資格情報を確認したように、$this->_showAdminPage() などのクラスのプライベート メソッドに移動します。

これは、ブログ編集者のような役割を定義すると、機能の観点から非常に明確になり、貴重なビジネス知識を非公開に保つことができます。

于 2013-02-16T00:49:54.693 に答える