ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでのクラスのインスタンス化に関するいくつかの注意事項

PHP_PHP チュートリアルでのクラスのインスタンス化に関するいくつかの注意事項

WBOY
WBOYオリジナル
2016-07-21 15:53:38927ブラウズ


以下はモデル(モジュール)を呼び出す関数です。この関数の基本的な機能は、(クラスに抽象化された) モデルの名前を指定し、モデル ディレクトリでこのクラスのスクリプトを検索し、インスタンス化後にそれを返します。このアプローチの利点の 1 つは、読み込みとインスタンス化が自動的に行われるため、最大限の柔軟性が得られることです。以下のコードを見てください。長くも複雑でもありません。

function &load_class($class_name, $param = null, $instantiate = true)
{
static $objects = array();

$class_name = ucfirst (strto lower($class_name));
if (isset($objects[$class_name])) {
return $objects[$class_name]; }

$class_file = DIR_MODELS .inc php ";
if (file_exists($class_file)) {
require_once $class_file;

if (!class_exists($class_name)) {
return false;
} else {
$objects[$class_name] =& new $class_name ($ param); ll、つまり$ class_name、$ instaniate、$ paramはコンストラクターのパラメーターです。関数内の $objects 配列は静的変数であることに注意してください。つまり、この関数が呼び出されたときに配列は解放されず、この配列内のデータは次回この関数が呼び出されたときに保存されます。この利点は、ほとんどのクラスをインスタンス化した後、それを繰り返し呼び出す必要がある場合に、このクラスのインスタンスを直接返すことができるため、繰り返しの呼び出しが回避され、パフォーマンスが向上することです。コードは次のとおりです:

static $objects = array();

if (isset($objects[$class_name])) {
return $objects[$class_name]
} 残りのコードは、このクラス名ファイルは、ファイルがロードされ、指定された名前のクラスが見つかった場合、クラスが見つかった後にインスタンス化されます。そのためには、スクリプト内のクラス名がスクリプトのファイル名と一致している必要があります。これは今後のコード管理にも役立つと思います。

このとき、$instaniate パラメーターが機能します。このパラメーターは、関数がファイル名の検索と読み込みと検索を繰り返すのを防ぐために、$objects の下にマーク ビット (null) を作成するように関数に指示します。 。

$ class_file = dir_models。 instantiate) ] = Null; u}
Return null;
} ステートメント:

$ object [$ class_name] = & new $ class_name ($ param); $class_name は関数内の文字列変数です。キーワード new は、指定された文字列 (存在する場合) のクラスを動的にインスタンス化できます。この呼び出し方法については、PHP のマニュアルとこちらを参照してください。

この関数の欠点は、異なるクラスごとのコンストラクターに異なる数のパラメーターを渡すことをどのように考慮するかということです。おそらく、call_user_func_array などの関数を使用して実装できますが、このアプローチは非常に優雅ではありません。ここで少し考える必要があります。実際、file_exists などのファイルの存在のテストは __autoload 関数に引き渡すことができますが、interface_exists などの他の関数も __autolaod 関数を呼び出すため、関数内では簡単なテストのみが行われます。 。

PHP5 は PHP4 よりもオブジェクト指向です。コーディングの考え方を更新する時期が来たと思います。 PHP5 のクラスとオブジェクトに関する非常に優れたチュートリアルがここにあります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/318657.html技術記事以下はモデル(Module)を呼び出す関数です。この関数の基本的な機能は、(クラスに抽象化された) モデルの名前を指定し、モデル ディレクトリでこのクラスの名前を検索することです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。