PHP, nasıl bir sınıf, kendi adını başvuruda bulunabilir?
Örneğin, yöntem, bunu yapmak için ne gibi bakmak istiyorsunuz?
Dog::sayOwnClassName();
//echos "Dog";
Update
Herkesin söylediğini görüyoruz get_class($this). Ama bu doğru değil. Ben bir instance Köpek yaratmak olsaydı bu işe olur. Ben Köpek sınıfının kendisi bir yöntemini çağıran soruyorum. Dog taşarsa Mammal, sonra da get_class($this) Dog sınıf içinde bir çağrı 'Memeli.' Dönecektir.
Başka bir deyişle:
- Ben cevap, hangi ", Köpek sınıfın sınıf ne" demiyorum "Köpek sınıfı Memeli sınıfının bir üyesidir."
- Ben de cevap olduğu için, "ne onun sınıf?, Köpek bir örneği (Rover denir) köpek sınıfı verilen" demiyorum "Köpek."
- Ne soruyorum "Köpek sınıf kendisi bana söyleyebilir 'benim adım Köpek nedir?'", Bir
Örneğin:
class Mammal {
public function find_by_id($id){
$query = "SELECT * FROM " . $myclass . " WHERE `id` = " . $id;
//(etc)
return $matching_object;
}
}
class Dog extends Mammal {
//find_by_id method should know to do a SELECT from Dog table
}
Update 2
Bir Yacoby önerisi get_called_class() doğru idi. Burada verdiğim örnekte nasıl çalışır.
class Mammal {
public function find_by_id($id){
$myclass = get_called_class();
$query = "SELECT * FROM " . $myclass . " WHERE `id` = " . $id;
//(etc)
return $matching_object;
}
}
class Dog extends Mammal {
//find_by_id knows to do a SELECT from Dog table
//and will return the correct dog object
}