ホームページ > バックエンド開発 > PHPチュートリアル > PHP でのクラスのインスタンス化に関する簡単なメモ

PHP でのクラスのインスタンス化に関する簡単なメモ

WBOY
リリース: 2016-07-29 08:37:30
オリジナル
1091 人が閲覧しました

以下はモデル(モジュール)を呼び出す関数です。この関数の基本的な機能は、(クラスに抽象化された) モデルの名前を指定し、モデル ディレクトリでこのクラスのスクリプトを検索し、インスタンス化後にそれを返します。このアプローチの利点の 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])) {
$class_file = DIR_MODELS .inc.php"; ($ class_file)){$ class_name] =&class_name($ param、$ class_name、$ paramが$instaniate はオプションです。関数内の $objects 配列は静的変数であることに注意してください。つまり、この関数が呼び出されたときに配列は解放されず、この配列内のデータは次回この関数が呼び出されたときに保存されます。この利点は、ほとんどのクラスをインスタンス化した後、それを繰り返し呼び出す必要がある場合に、このクラスのインスタンスを直接返すことができるため、繰り返しの呼び出しが回避され、パフォーマンスが向上することです。コードは次のとおりです:
static $objects = array();
if (isset($objects[$class_name])) {
return $objects[$class_name]; }残りのコードは、このクラス名を持つファイル、このファイルがロードされ、指定された名前を持つクラスが検索され、クラスが見つかった場合はインスタンス化されます。そのためには、スクリプト内のクラス名がスクリプトのファイル名と一致している必要があります。これは今後のコード管理にも役立つと思います。
$instaniate パラメータはこの時点で機能します。このパラメータは、関数がファイル名の検索と読み込みと検索を繰り返すのを防ぐために、$objects の下にマーク ビット (null) を作成するように関数に指示します。 $ class_file $ class_file return {o $ objects [$ class_name] = class_name($ param); null を返す;
} ステートメント:




[$ class_name] = & new $class_name ($ param); $class_name は関数内の文字列変数です。キーワード new は、指定された文字列 (存在する場合) のクラスを動的にインスタンス化できます。この呼び出し方法については、PHP のマニュアルとこちらを参照してください。
この関数の欠点は、異なるクラスごとのコンストラクターに異なる数のパラメーターを渡すことをどのように考慮するかということです。おそらく、call_user_func_array などの関数を使用して実装できますが、このアプローチは非常に優雅ではありません。ここで少し考える必要があります。実際、file_exists などのファイルの存在のテストは __autoload 関数に引き渡すことができますが、interface_exists などの他の関数も __autolaod 関数を呼び出すため、関数内では簡単なテストのみが行われます。 。
PHP5 は PHP4 よりもオブジェクト指向です。コーディングの考え方を更新する時期が来たと思います。 PHP5 のクラスとオブジェクトに関する非常に優れたチュートリアルがここにあります。

上記は、インスタンスの内容も含め、インスタンスの PHP インスタンス化クラスの一部を抜粋して紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。

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