PHP実用化類の一点抜粋

2362 ワード

以下はモデルを呼び出す関数です。この関数の基本的な機能は、モデル(クラスに抽象化)の名前を指定し、モデルディレクトリの下にこのクラスのスクリプトの実用化を探して戻ってきます。このようなやり方には、ロードと実用化が自動的であり、最大の柔軟性を得ることができるというメリットがあります。下のコードを見てください。長くなくて複雑ではないです。 &ロード.クラス($クラス)name $パラム = null $instantiate = true{    static $object = array();    $クラスname = ucfirstname);    if (isset($object[$class_]name {         return $object[$class]name;    }     $クラスfile = DIR_MODELS . "/{$クラスname'.inc.php';    if (file_exists($class_)file) {         require_オンス $クラスfile;        if (!クラスexists($class_)name {             return false;        } else {             $object[$class]name =& new $クラスname($param)            return $object[$class]name;        }     }  else {         if ($instantiate) {             $object[$class]name = null        }          return null    } }関数は三つのパラメータしかありません。それぞれは $クラスname 、$パラム および $instaniate ,そのうち $パラム は、コンストラクタのパラメータです。 はオプションです。関数の中の $object 配列は静的変数です。つまり、この関数を使い切ったときは配列は解放されません。この関数を次回呼び出したときは、この配列のデータは保存されます。このようにする利点は、大部分のクラスのインスタンスを後に戻すことができます。コールを繰り返す必要があるなら、直接にこのクラスのインスタンスに戻ることができます。重複した呼び出しを回避し、性能を向上させます。コードは以下の通りです    static $object = array();    if (isset($object[$class_]name {         return $object[$class]name;    }他のコードはこのクラスの名前があるかどうかを検出するファイルです。このファイルを読み込んで、名前を指定するクラスを探しています。このクラスを見つけたら、実用化されます。スクリプトのクラス名はスクリプトのファイル名と一致していなければなりません。これは今後のコード管理にも役立つと思います。instaniate パラメータはこの時に効果を発揮します。このパラメータは関数に教えます。 $object 下にマーカービット(null)を作ります。関数を繰り返してファイル名を探して、繰り返し読み込みと検索をします。    $クラスfile = DIR_MODELS . "/{$クラスname'.inc.php';    if (file_exists($class_)file) {         require_オンス $クラスfile;        if (!クラスexists($class_)name {             return false;        } else {             $object[$class]name =& new $クラスname($param)            return $object[$class]name;        }     }  else {         if ($instantiate) {             $object[$class]name = null        }          return null    }その中の語句:$object[$class_]name =& new $クラスname($param)何度も推敲してもいいです。クラスname 関数では文字列変数です。キーワード new 文字列のクラスを指定します。この呼び出し方法については PHP マニュアルとここですこの関数の足りないところは,各クラスの構造関数に異なる数のパラメータを伝達することをどう考えるかである。使えるかもしれません コールアメリカ.funcarray などの関数が実現しますが、このようなやり方は非常によくないです。 Graceここで推敲が必要です。実のところ file_exists ファイルの存在を待つテストは提出できます。 __autload 関数で処理しますが、他の関数で例えば インターフェースexists なども呼びます __atolaod 関数は、互換性を考慮して関数内で簡単なテストを行います。PHP 5 相対 PHP 4 というより対象に向けて。私たちのコードを更新する時間だと思います。関係がある PHP 5 クラスと対象はここにあります。とてもいい教程があります。