ホームページ > バックエンド開発 > PHPチュートリアル > CodeIgniter エントリ ファイルの分析

CodeIgniter エントリ ファイルの分析

WBOY
リリース: 2016-07-29 09:14:55
オリジナル
1308 人が閲覧しました
CI フレームワークの基本的なプロセスについて説明しましたが、参考までにフローチャートを再度示します:

CodeIgniter エントリ ファイルの分析

CI フレームワークのエントリ ファイルとして、ソース コードの読み込みは当然ここから始まります。ソースコードを読む過程では、一行ずつ説明するのではなく、コアとなる機能と実装のみを説明します。

1. アプリケーション環境をセットアップします

<span>define</span><span>('ENVIRONMENT', 'development');</span>
ログイン後にコピー

ここでの開発には、任意の環境名を指定できます (dev や test など)。それに応じて、以下の switch case コード ブロックを使用する必要があります。 、設定された環境で関連するエラー制御を実行します。そうしないと、CI フレームワークは対応する環境が構成されていないと判断し、プロセスを終了し、対応するエラー メッセージを表示します:

<span>default</span><span>:     <span>exit</span>('The application environment is not set correctly.');</span>
ログイン後にコピー

なぜ行う必要があるのですかそもそも環境を設定しますか?これは、CI フレームワークの多くのコンポーネントが ENVIRONMENT の構成に依存しているためです。システム内で ENVIRONMENT が参照されている場所を見てみましょう:

CodeIgniter エントリ ファイルの分析
たとえば、view に多くのコンポーネントが依存していることがわかります。 system/config /Common.php には、設定ファイルを導入するコードがあり、次のように実装されています:

<span>if</span><span> ( ! <span>defined</span>('ENVIRONMENT') OR ! <span>file_exists</span>(<span>$file_path</span> = APPPATH.'config/'.ENVIRONMENT.'/config.php'<span>))
{
    </span><span>$file_path</span> = APPPATH.'config/config.php'<span>;
}</span></span>
ログイン後にコピー

CI フレームワークでは、多くの設定ファイルがこの方法で導入されるため、ENVRIONMENT はCI フレームワークにとって非常に重要です。正しく動作するために必要なので、最初に ENVIRONMENT を設定する必要があります。 ENVIRONMENT を設定する利点の 1 つは、システム コードを変更せずにシステム構成を簡単に切り替えることができることです。たとえば、システムがテスト段階に入ると、データベースはテスト データベースとして構成され、システム テストが完了すると、データベースはオンライン データベースに切り替わります。これは、スイッチを使用してシステムの環境切り替えを制御するようなもので、当然ながら非常に便利です。

2. システム ディレクトリとアプリケーション ディレクトリを構成します

CI フレームワークでは、システム コア ソース コードとアプリケーション コードを分離できますが、システム システム フォルダーとアプリケーション フォルダーを設定する必要があります (同様に、フォルダー名は、必ずしも「システム」と「アプリケーション」を使用せずに、任意の正当なフォルダー名にすることができます):

<span>$system_path</span><span> = 'system'<span>;
</span><span>$application_folder</span> = 'application';</span>
ログイン後にコピー

次に、次のようなコードがあります:

<span>if</span><span> (<span>defined</span>('STDIN'<span>))
{
     </span><span>chdir</span>(<span>dirname</span>(<span>__FILE__</span><span>));
}</span></span>
ログイン後にコピー

これは何ですかコードスニペット?まず、STDINSTDOUTSTDERRはPHP CLI(コマンド)です。 Line Interface) モードの操作では 3 つの定数が定義されています。これら 3 つの定数は、それぞれ PHP CLI モードのシェルの 標準入力標準出力標準エラー ストリーム に似ています。言い換えれば、これら 3 行のコードは、CI フレームワークがコマンド ライン モードで正常に実行できることを保証するためのものです。 PHPについて CLI の詳細については、http://www.php-cli.com/

3. システム ディレクトリの正確性の検証とアプリケーション ディレクトリの検証

(1) を参照してください。システム ディレクトリの正確性の検証
Realpath は、ディレクトリまたはファイルの絶対ディレクトリ名 (最後の / なし) を返します

<span>if</span><span> (<span>realpath</span>(<span>$system_path</span>) !== <span>FALSE</span><span>)
{
    </span><span>$system_path</span> = <span>realpath</span>(<span>$system_path</span>).'/'<span>;
}
</span><span>$system_path</span> = <span>rtrim</span>(<span>$system_path</span>, '/').'/'<span>;
</span><span>if</span> ( ! <span>is_dir</span>(<span>$system_path</span><span>))
{  
    </span><span>exit</span>("xxxxxxxx"<span>);
}</span></span>
ログイン後にコピー

いくつかの定義された定数 (PATH の最後の定数はディレクトリ パスを表します) 、DIR の末尾の変数はディレクトリ名を表します):
a. SELF (ここでは、index.php ファイルを指します)
b. EXT(非推奨、放棄されました、支払う必要はありません)注意)
c. BASEPATH (システム フォルダーへのパス)
d. FCPATH (フロントエンド コントローラーへのパス)
e. APPPATH (アプリケーションパス)
すべての定義を表示 定数メソッド:

<span>Print_r</span><span>(<span>get_defined_constants</span>());</span>
ログイン後にコピー

(2) アプリケーションのディレクトリ検証。

CodeIgniter エントリ ファイルの分析

コードは比較的単純で、多くの説明は必要ありません:

<span>if</span><span> (<span>is_dir</span>(<span>$application_folder</span><span>))
{
    </span><span>define</span>('APPPATH', <span>$application_folder</span>.'/'<span>);
}
</span><span>else</span><span>
{
    </span><span>if</span> ( ! <span>is_dir</span>(BASEPATH.<span>$application_folder</span>.'/'<span>))
    {
        </span><span>exit</span>("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".<span>SELF);
    }

    </span><span>define</span>('APPPATH', BASEPATH.<span>$application_folder</span>.'/'<span>);
}</span></span>
ログイン後にコピー

エントリ ファイルの最後の行では、

CodeIgniter.php

が導入されています (これは、次の読み取りステップへの鍵でもあります)。 CodeIgniter.php はブートストラップ ファイルと呼ばれ、これはブートストラップ ファイルであり、CI フレームワーク実行プロセスのコア ファイルであることを意味します。

<span><strong>require</strong>_once</span><span> BASEPATH.'core/CodeIgniter.php';</span>
ログイン後にコピー
まとめると、index.phpはあまり複雑な作業は行わず、CIフレームワークの動作のための一連の設定パラメータと正当性検証を提供するロジスティックスのようなもので、これらの設定と検証はThe CI フレームワークの通常の動作の鍵となります。

上記は、CodeIgniter エントリ ファイルの分析を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート