Yerleşik sınıfların özelleştirilmiş sürümlerini oluşturmak istediğiniz takdirde (yöntemler yerine üye değişkenlere kolayca erişmek veya aracı yöntemlere sahip olmak ya da renkli HTML sürümünü oluşturmak istiyorsunuz diyelim), baştan sona hepsini genişletebilirsiniz.
Örnek 1 - Yerleşik sınıfların genişletilmesi
<?php
/**
* Kendi Reflection_Method sınıfımız
*/
class My_Reflection_Method extends ReflectionMethod
{
public $visibility = array();
public function __construct($o, $m)
{
parent::__construct($o, $m);
$this->visibility = Reflection::getModifierNames($this->getModifiers());
}
}
/**
* Sınıf denemesi 1
*
*/
class T {
protected function x() {}
}
/**
* Sınıf denemesi 2
*
*/
class U extends T {
function x() {}
}
// Bilgiler görelim
var_dump(new My_Reflection_Method('U', 'x'));
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
object(My_Reflection_Method)#1 (3) { ["visibility"]=> array(1) { [0]=> string(6) "public" } ["name"]=> string(1) "x" ["class"]=> string(1) "U" }
Kurucunun üzerine yazıyorsanız, herhangi bir
kod yazmadan önce ebeveynin kurucusunu çağırmayı
unutmayın. Bunu yapmazsanız şöyle bir sonuç alırsınız: Fatal
error: Internal error: Failed to retrieve the reflection object
Türkçesi: Ölümcül hata: Dahili hata: reflection nesnesi alınamadı