4

CodeIgniter を使い始めたばかりで、通常のモジュール/関数をハッシュして、MVC フレームワーク内で適切に動作させようとしています。CodeIgniter の経験が豊富な方に、いくつか具体的な質問があります。

セッション

CodeIgniter セッションは、クライアント側のセッション データを Cookie に保存しますが、これはうまくいきません。それに代わるものがいくつかあることは知っています。または、独自のライブラリ/ヘルパーを構築することもできます。しかし、単に使用するだけでは何のメリットもありません$_SESSION

を使用した場合$_SESSION、フレームワークの残りの部分に問題はありますか? フレームワークの他の部分は、CodeIgniter セッションの使用に依存していますか?

フレームワークの外に出て、とても基本的なことをするのは少し奇妙に感じますが、プレーンな PHP にはかなり慣れています。私は基本的に、MVC に CodeIgniter を使用し、プロジェクトによりモジュール的な側面を適用することを検討しています。

コードフローと構成

他のほとんどすべての前に実行する必要がある構成項目がいくつかあります。

たとえばAPP_LIVE、現在のサーバーの名前に基づいて true/false が設定される定数があるとします。パス、エラー報告、CodeIgniter システム、アプリケーション フォルダなどがそれに基づいて設定されるため、これは非常に早い段階で行われる必要があります。

問題は、(コードが実行されているサーバーに基づいて設定されるsystem_folder) と(コードが実行されているサーバーに基づいて設定される) が、いずれかの構成がロードされる前に、ファイル内で最初に設定されることです。application_folderindex.php

また、URL 内のものをチェックする関数があり、ページが読み込まれる前にリダイレクトされる場合があります。たとえば、一部のページでwww.は、(SEO 用に) URL に が含まれていることを確認したり、アフィリエイト、訪問者のソース、マーケティング フラグなどを追跡したりする必要があります。

このような非常に早期に行わなければならないものを配置するのに最適な場所はどこですか? 構成ファイル、オートロード ファイル、定数ファイルなどがあることは知っていますが、一部のアイテムには遅すぎます。index.phpこれらのものをメインファイルの先頭に単純に配置したり、グローバル構成ファイルにインクルードしたりするのは悪い習慣ですか? 繰り返しますが、フレームワークの外に出ているような気がします。まだしっかりと理解していないので、それをしているだけなのだろうか?

レイアウト / ヘッダー フッター

ほとんどの人と同じように、トップ ヘッダー、ナビゲーション、フッターなどがあります。ページ テンプレートに含まれるファイルにそれらを含めることに慣れています。それらをビューにしてメインページビューに含めるだけで、同じようにできると思います。それが最善の方法ですか?それらのいくつかは少しのデータを必要とします。ナビゲーションのためにどのページにいるのかなど。ナビゲーション、共有ヘッダー/フッターなどを処理する最良の方法は何ですか?

4

5 に答える 5

3

新しくリリースされた CI 1.7 は、データベース内のセッションを処理します (使用している場合)。

ただし、CI は疎結合になるように設計されているため、代わりに $_SESSION を使用することにした場合、大きな問題に気付くことはありません。

ヘッダー/フッター/ナビゲーションの場合、(たとえば) headerview.php、footerview.php、および contentview.php を作成し、コントローラーで次のようにしてビューにデータを渡すことができます。

$data['title'] = 'about us';
$data['content'] = 'hello world!';

$this->load->view('headerview', $data);
$this->load->view('contentview', $data);
$this->load->view('footerview');

基本的に、これらのビューはインクルードとまったく同じように扱うことができますが、内部の変数を変更できるという追加の利点があります。ビュー内から他のビューを呼び出すことは避けますが、それは私だけかもしれません。

私自身、index.phpに初期値を設定するなどの追加を1、2回行ったことがありますが、これまでに問題が発生したことはありません。

フレームワークの選択おめでとうございます。がっかりすることはないと思います。;)

于 2008-11-08T07:48:56.627 に答える
1

すべてのコントローラーに複数の load->view 行を含めることができますが、個人的には結合されていることがわかります。各コントローラー/メソッドの後に自動的に実行される関数を定義できる CodeIgniter のフックを確認することを強くお勧めします (AOP の良い例です)。

于 2008-11-08T08:02:15.680 に答える
1

実際には $_SESSION 配列が設定されていないように見えるため、ネイティブ PHP セッションを使用できません (少なくとも 1.7 では)。ただし、CodeIgniter wiki には、ネイティブ php セッションを使用するセッション クラスがあります。他のセッションと同じように使用できますが、cookie には session_id のみが保存されます。ここにあります: http://codeigniter.com/wiki/Native_session/

于 2008-11-11T23:00:56.690 に答える
0

@lacho$_SESSIONに独自の認証ライブラリを作成しました。1.7では正常に動作します。

CIの「セッション」はクライアント側に保存されるCookieであり、信頼できない「ユーザーが渡した情報」として分類されるため、$_SESSIONの方がはるかに安全だと思います。

于 2008-11-17T04:05:25.363 に答える
0

独自のセッション クラスを使用してネイティブで試すことができます

http://www.moreofless.co.uk/using-native-php-sessions-with-codeigniter/

于 2012-11-14T06:29:52.483 に答える