Nasıl php ana sınıfı ile bir nesne karşılaştırabilirsiniz?

2 Cevap php

Ben mevcut sınıf ve ana sınıfına başvurmak için devralınan yöntemleri bir nesnenin sınıfını karşılaştırmak istiyorum. Bu bunu yaptığını düşünebilirsiniz tek yoludur:

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

Kendine miras yöntemleri üst sınıfa gelir, çünkü bu işler, ama bir sınıf ben bir karşılaştırma yapmak istediğiniz her zaman örneğini zorunda aşırı görünüyor.

Basit bir yolu var mı?

2 Cevap

Kullanmak __CLASS__ magic constant yapabilirsiniz:

return get_class($obj) == __CLASS__;

Hatta sadece hiçbir argüman ile get_class() kullanın:

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

Evet kesinlikle, ama miras sakının.

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

Bir sınıf bir arabirim uygulayan ya da (yani eklentileri, adaptörler, ...) soyut sınıfını genişleten emin olmak istiyorsanız çok kullanışlı