Files
archived-doc-pt-br/reference/reflection/extending.xml
2025-10-06 16:46:57 -03:00

101 lines
2.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: fa6e196973e45c0013c0801e01697757f4b98426 Maintainer: leonardolara Status: ready -->
<chapter xml:id="reflection.extending" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Estendendo</title>
<para>
Caso a intenção seja criar versões especializdas das
classes nativas (seja para criar HTML colorido
na exportação, ou para ter variáveis membros de
fácil acesso ao invés de métodos ou para ter métodos utilitários),
elas podem ser estendidas.
</para>
<example>
<title>Estendendo classe nativas</title>
<programlisting role="php">
<![CDATA[
<?php
/**
* Minha Classe 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());
}
}
/**
* Demonstração classe #1
*
*/
class T {
protected function x() {}
}
/**
* Demonstração classe #2
*
*/
class U extends T {
function x() {}
}
// Exibir as informações
var_dump(new My_Reflection_Method('U', 'x'));
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
object(My_Reflection_Method)#1 (3) {
["visibility"]=>
array(1) {
[0]=>
string(6) "public"
}
["name"]=>
string(1) "x"
["class"]=>
string(1) "U"
}
]]>
</screen>
</example>
<caution>
<para>
Se construtor for sobrescrito, lembre-se de chamar
o construtor pai antes de qualquer código que for adicionado.
Se isto não for feito, ocorrerá o seguinte erro:
<literal>Fatal error: Internal error: Failed to retrieve the reflection object</literal>
</para>
</caution>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->