PHPが好きではない理由

免責事項



これは次のholivarのトピックではないことを事前に警告したいと思います。 しかし、これはこの言語が非常に広く、おそらく習慣から外れているからです。

PHP6を楽しみにしています:)



その間、厳しく判断せず、私のカルマを負けないように急がないでください-これが私の最初のhabratopikです

実際に問題



タスクはごく普通のことでした- シングルトンパターンを使用する必要がありました

多数のクラス用。 クラスごとに個別にこれを行う理由はなく、継承があるのはなぜかということは明らかです!

数分-そして出来事-独創的なことはすべて簡単です:



クラスstatic_base {
	 static $ instance = null;

	静的関数インスタンス(){
		 if(!self :: $ instance)
			 self :: $ instance = new self();
		 return self :: $インスタンス;
	 }
 };

クラスstatic_Aはstatic_base {}を拡張します。
クラスstatic_Bはstatic_baseを拡張します{};

 static_A ::インスタンス();
 static_B ::インスタンス();




しかし、そこにありました! これがPHP5.2.4であることを忘れていました。 このコードの結果はどう思いますか? まったく推測することはできません-さらに、どちらの呼び出しもstatic_base



クラスの同じオブジェクトを返します!

そして、その後の人々を信じて



判明したように、 PHPではコードの解析段階でself



修飾子が置換されるため、 static_A::instance()



static_base::instance()



呼び出しに違いはありません。

これは、 self



と一緒にstatic



修飾子を導入することにより、PHP5.3で修正されたのは良いことです。



All Articles