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ı