CodeIgniter (以下、CI、公式 Web サイトおよび中国語 Web サイトと呼びます) は、人気のある PHP フレームワークであり、小さいながらも強力で、シンプルで軽量で、優れた拡張性を備えています。国内でも人気です。一方、CI は時代に追いついていず、PHP5.3 以降の一部の機能をサポートしていないため、比較的古いプロジェクトに適しています。それでも、CI は依然として優れたフレームワークであり、コアが小さく、ソース コードが洗練されており、学習に適しています。
CIは使いやすく、Webアプリケーションを簡単に開発できます。まずはCIワークフロー図を見てみましょう(ここの内容はhttp://codeigniter.org.cn/user_guide/overview/appflow.htmlから引用しています)
、
1.index.php は、CodeIgniter の実行に必要な基本リソースを初期化するフロントエンド コントローラーとして機能します。
2.ルーターは HTTP リクエストをチェックして、誰がリクエストを処理すべきかを決定します。
3. キャッシュ ファイルが存在する場合、通常のシステム実行シーケンスをバイパスし、ブラウザに直接送信されます。
4. セキュリティ。 HTTP リクエストとユーザーが送信したデータは、アプリケーション コントローラーがロードされる前にフィルタリングされます。
5. コントローラーは、モデル、コア ライブラリ、ヘルパー関数、および特定のリクエストを処理するために必要なその他のリソースを読み込みます。
6. 最終ビューでは、Web ブラウザに送信されたコンテンツがレンダリングされます。キャッシュがオンになっている場合は、ビューが最初にキャッシュされるため、今後のリクエストに使用できるようになります。
上記は一般的なプロセスを示しています。では、ブラウザーでレンダリングされたページを見ると、プログラムは内部的にどのように正確に動作するのでしょうか?
以下は、CI フレームワークによってロードされる主なファイルの実行順のリストと、それらの機能の簡単な紹介です。
01.index.php
使用環境(ENVIRONMENT)、フレームワークパス(system_path、BASEPATH)、アプリケーションディレクトリ(application_folder)、アプリケーションパス(APPPATH)などを定義し、CIコアファイルをロード(require)します
02. BASEPATH/core/CodeIgniter.php (ps. 実際には、BASEPATH には最後のファイル区切り文字 '/' が含まれていますが、わかりやすく表示するためにここに追加の '/' が追加されています)
フレームワーク全体の中核部分であるシステム初期化ファイルは、ここで一連の基本クラスをロードし、このリクエストを実行します
03.BASEPATH/core/Common.php
共通ファイルには、load_class()、get_config() など、グローバルに使用するための一連の基本関数とパブリック関数が含まれています。
04.ベースパス/コア/ベンチマーク
これは、デフォルトでアプリケーションの各ステージの実行ポイントをマークして実行時間を取得するベンチマーク テスト クラスです。監視ポイントを自分で定義することもできます。
05.BASEPATH/core/Hooks.php
CI_Hooks はフレームワーク拡張の中核となるフック クラスで、プログラムで許可されているさまざまな段階でフック ポイントを挿入し、カスタマイズしたクラス、関数などを実行できます。
06.BASEPATH/core/Config.php
構成ファイル管理クラス、構成のロード、読み取り、または設定
07. BASEPATH/core/URI.php、BASEPATH/core/Router.php
URI クラスは、要求された URI を解析するのに役立ち、Router クラスで使用するために URI を分割する一連の関数を提供します
08.BASEPATH/core/Router.php
ルーティング クラスは、要求された URI とユーザー設定のルート (APPPATH/config/routes.php) を通じて、指定された処理関数 (通常はコントローラー インスタンスのアクション関数) にユーザー リクエストを分散します。
09. BASEPATH/core/Output.php、BASEPATH/core/Input.php
Input クラス。リクエストの入力パラメータを処理し、それらを取得する安全な方法を提供します。出力クラスは最終的な実行結果を送信し、キャッシュ機能も担当します
10.ベースパス/core/Controller.php
コントローラー基本クラス。シングルトン モードを使用して、アプリケーション全体の中心となる外部の世界にインスタンスを提供します。これはスーパー オブジェクトであり、アプリケーション内にロードされたクラスはコントローラーのメンバー変数になることができます。これは非常に重要であり、後で説明します。
11.APPPATH/controllers/$RTR->fetch_directory().$RTR->fetch_class().'.php'
ルーティング関数を通じて、コントローラー名を取得し、実際のコントローラークラス(サブクラス)をインスタンス化します
12. ベースパス/core/Loader.php
CI_Loaderは、さまざまなクラスライブラリ、モデル、ビュー、データベース、ファイルなどをアプリケーションにロードし、コントローラーのメンバー変数として設定するために使用されます
13. call_user_func_array は処理関数を呼び出します
ルーティングにより、アクション関数名を取得し、Controller->action()関数を呼び出し、アプリケーションロジックを処理します。実際の業務処理ロジックはアクション関数に記述されます。
14. $OUT->_display() はコンテンツを出力します
上記はアプリケーション全体の最も基本的な処理の流れです。以下では、コア コンテンツ コードを選択して説明し、CI の理解を深めます:
リーリー