どのように私はPHPで親クラスとオブジェクトを比較することができますか?

StackOverflow https://stackoverflow.com/questions/1577004

  •  21-09-2019
  •  | 
  •  

質問

私は現在のクラスと、親クラスを参照するように継承されたメソッドにオブジェクトのクラスを比較したいです。これは私がそれをやって考えることができる唯一の方法です。

class foo { function compare($obj) { return get_class($obj) == get_class(new self); } }
class bar extends foo { }

$foo = new foo;
$foo->compare(new foo); //true
$foo->compare(new bar); //false
$bar = new bar;
$bar->compare(new foo); //true
$bar->compare(new bar); //false

この作品を自己が継承されたメソッドで親クラスを指し、クラス私は比較をしたいすべての時間をインスタンス化する必要が過大と思われるからです。

簡単な方法はありますか?

役に立ちましたか?

解決

あなたは__CLASS__ マジック定数を使用することができます:

return get_class($obj) == __CLASS__;

あるいは単に引数なしで get_class()に使用します:

return get_class($obj) == get_class();

他のヒント

はい、間違いなく、しかし、継承に注意ます。

class Foo;
class Bar extends Foo;

$foo = new Foo();
if($foo instanceof Foo) // true
if($foo instanceof Bar) // false

$bar = new Bar();
if($bar instanceof Foo) // true
if($bar instanceof Bar) // true
それはあなたが必ずクラスが実装インタフェースを作成したい場合に非常に便利ですまたは抽象クラスを拡張する(IE用プラグイン、アダプタ、...)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top