PHP 8.4.0 RC4 available for testing

Расширение

Если вам нужна специализированная версия встроенного класса (который, например, сможет генерировать цветной HTML при экспорте, будет иметь легкодоступные свойства вместо методов или же какие-нибудь вспомогательные методы), то можете просто взять и расширить его.

Пример #1 Расширение встроенных классов

<?php
/**
* Мой класс Reflection_Method
*/
class My_Reflection_Method extends ReflectionMethod
{
public
$visibility = array();

public function
__construct($o, $m)
{
parent::__construct($o, $m);
$this->visibility = Reflection::getModifierNames($this->getModifiers());
}
}

/**
* Демо-класс #1
*
*/
class T {
protected function
x() {}
}

/**
* Демо-класс #2
*
*/
class U extends T {
function
x() {}
}

// Выведем информацию о методе
var_dump(new My_Reflection_Method('U', 'x'));
?>

Вывод приведённого примера будет похож на:

object(My_Reflection_Method)#1 (3) {
  ["visibility"]=>
  array(1) {
    [0]=>
    string(6) "public"
  }
  ["name"]=>
  string(1) "x"
  ["class"]=>
  string(1) "U"
}
Предостережение

Когда вы переопределяете конструктор, не забудьте обязательно вызвать родительский конструктор до любого добавленного вами кода. Если так не делать, то вы можете получить сообщение об ошибке вида: Fatal error: Internal error: Failed to retrieve the reflection object

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top