静的メソッド:
例
class A{ public static function a(){ # code ... } public static function b(){ # code ... } } // 使用 A::a(); A::b();
スクリプトが解釈されると、静的メソッドはメモリにロードされます (そして単一コピーされます)。関数のように使えます。
単一のケース:
クラスのコピーが 1 つだけメモリに保存されることを実現するために、静的変数を使用したコードを通じてデザイン パターンが実装されます
例
class Container(){ protected static $loadedSingletonClasses = []; public static function loadSingletonClass($className=''){ if(!isset(self::$loadSingletonClass[$className])){ self::$loadSingletonClass[$className] = new $className; } return self::$loadSingletonClass[$className]; } } $a = Container::loadSingletonClass("foo\bar\MyClass"); $b = Container::loadSingletonClass("foo\bar\MyClass");
$a $b上記のコード内の変数は同じメモリ アドレスを指します (ただし、これら 2 つの変数によってインスタンス化されたクラスのデストラクターをトリガーしたい場合は、両方の変数を破棄する必要があります。詳細については、PHP オブジェクト指向の知識の概要を参照してください)。
シングルトンと静的メソッドの違いは、静的メソッドはスクリプトの解釈時にメモリにロードされるのに対し、シングルトンは新規作成時にのみメモリにロードされることです (両方のコードがメモリ コード領域にロードされている場合)
自動ロード:
自動ロードの説明があります(PHPでのautoloadの実装メカニズム)
クラスをインスタンス化するとき、新しいクラスを
静的メソッドCLASS::func()を呼び出します
継承されたクラスとInterfaces subClass extendsparentClass{}
この時点で、自動ロード関数がトリガーされます:
use を使用してクラスのエイリアスを作成する場合、渡されるクラス名はエイリアスの前のクラスでもあります
上記ではシングルトンとPHP におけるオブジェクト指向 静的メソッドの比較と自動クラスローディングの分析 (コンテンツの側面を含む) 詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。