私は最近 PHP を学習していますが、.NET と比較するのが好きです。違いの 1 つは他のファイル内のオブジェクトの参照の問題であることがわかりました。 Java にはパッケージという概念があり、.NET には DLL アセンブリ参照というより便利な概念があることがわかっています。パッケージ化された形式で結合されたオブジェクトのコレクションを通じて、独自のクラス内の他のオブジェクトや、クラスで定義された他のオブジェクトを簡単に参照できます。他の場所にもありますが、PHP には対応する概念がないため、他のファイルで定義されたオブジェクトを参照する必要がある場合、PHP プログラマが最もよく使用する 2 つの関数は require_once と include です。これらの 2 つの関数を通じて、定義されたクラスなどのオブジェクトを使用できます。他のクラスライブラリでも。しかし、多くの人は、同じディレクトリ内の他のファイルを使用するときに、単純に次のコードを使用してファイルを参照します:
<p class="sycode"> include ( ' include.php ' ); </p>
もちろん、この方法に問題はありませんが、次の方法よりも若干効率が劣ります。
<p class="sycode"> include ( realpath ( dirname (_FILE_)) . DIRECTORY_SEPARATOR . ' include.php ' ); </p>
この方法では、より多くの入力が必要になる可能性がありますが、PHP エンジンが include_path を反復処理して「include.php」という名前のすべての名前を検索し、対応するオブジェクト dirname( __FILE__) を見つける必要がある前の方法と比較すると、この絶対パスの指定により、システムは対応するファイルを迅速に見つけることができます。
PHP の定数 __FILE__ は、実際には C# の AppDomain.CurrentDomain.BaseDirectory に非常に似ており、現在実行されているコードが配置されているファイルの絶対パスを返します。関数 dirname() は、その親フォルダーのパスを返します。
もう 1 つのより効率的で簡単な記述方法は include('./include.php') です。これは、現在のパスで 'include.php' ファイルを見つけるようにシステムに指示するのと同じです。
大規模なシステムでは、別のより良い方法を使用することがよくあります。次のコードをルーティング ファイルまたはその他の初期化ファイルに追加します。
<p class="sycode"> define ( ' APP_PATH ' , realpath ( dirname (_FILE_))); </p>
これは、システム ルートを指すグローバル変数をシステムに追加するのと同じです。 directory で、後で特定のパスにあるファイルを参照する必要がある場合は、次のコードを使用できます:
<p class="sycode"> include (APP_PATH . DIRECTORY_SEPARATOR . ' models ' . ’User . php’); </p>
この簡単な概要がお役に立てば幸いです。
注: PHP 5.3 以降に新しい Phar 機能があることを発見しました。これは Java の jar パッケージと同じ概念を持つと言われていますが、ネット上にはあまり情報がなく、まだ実際に使用していません。 。それを紹介する記事を見つけました: http://www.ibm.com/developerworks/cn/opensource/os-php-5.3new4/index.html