CI フレームワークのソースコードを読むメモ 8 Controller.php_PHP チュートリアル
Jul 13, 2016 am 10:13 AM
コントローラ
フレーム
ソースコード
CIフレームワークのソースコード読書メモ8 Controller.php
最近は時間が迫っており、ソースコードリーディングシリーズの更新が少し遅れています。コントローラーのコードは比較的少ないため、このブログではまずこのファイルのソース コード分析を更新します。 ルーティングと配布の後、実際のアプリケーション コントローラーはユーザーからのすべてのリクエストを引き継ぎ、ユーザー データと対話する責任を負います。 CI 内のすべてのアプリケーション コントローラーは CI_Controller のサブクラスである必要があります (CI のコアを拡張しない限り、コントローラーの親クラスは MY_Controller にすることができます)。
アプリケーションコントローラーでは、次のようなコードをよく使います:
/* 設定ファイルをロード */
$this->load->config("config_app");
/* モデルをロード */
$this->load->model("user");
/* ビューをロード */
$this->load->view("index");
/* 投稿を取得 */
$this->input->post("data",true);
/* ゲットゲット */
$this->input->get("data",true);
/* xss をクリア */
$this->security->xss_clean($data);
/* 時点をマーク */
$this->benchmark->mark("app_start");
次に、これらはどのように実装されるのでしょうか?
このクラスの構造は非常に単純ですが、CI_Controller のクラス図を掲載します。
1. _construct() コンストラクター
ここで、CI はプロセスを実行し、ロードされたすべてのコンポーネントを CI_Controller に追加します (is_loaded 関数がロードされたすべてのコンポーネントを追跡することは前に説明しました):
foreach (is_loaded() as $var => $class)
{
$this->$var =&load_class($class);
}
コントローラーがインスタンス化されるときに is_loaded によって追跡されるコンポーネントを確認します。
これは、$this->input やその他のメソッドを通じて CI コンポーネントを呼び出すことができる理由を説明しています。
これだけでは不十分です。ローダーも導入しましょう:
$this->load =&load_class('Loader', 'core');
$this->load->initialize();
これで、Loader コンポーネントを使用して、設定をロード ($this->load->config)、モデルをロード ($this->load->model)、ビューをロード ($this->load- >見る)
CI_Controller は、複数のコンポーネントを保持するスーパークラスであると言えます。このように、設計パターンにおける「エージェント パターン」によく似ています。
2.&get_instance
簡単に説明すると、CI_Controller はシングルトンモードのクラスであり、このクラスのインスタンスは get_instance() メソッドを通じて取得されます。このメソッドは、CodeIgniter.php の get_instance 関数によって呼び出されます。
test.xq.com/admin/index/
2. コントローラーは過度のロジックを持たないようにして、ビジネス ロジックをモデルにカプセル化する必要があります。
foreach (is_loaded() as $var => $class)
{
$this->$var =&load_class($class);
}
$this->load =&load_class('Loader', 'core');
$this->load->initialize();
Log_message('debug', "コントローラ クラスが初期化されました");
}
パブリック静的関数&get_instance()
{
return self::$instance;
}
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7287
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか?

さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法

PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか?

Golang フレームワークのパフォーマンス比較: 賢明な選択を行うための指標
