1
0
mirror of https://github.com/php/doc-fr.git synced 2026-03-24 15:12:13 +01:00
Files
archived-doc-fr/reference/reflection/extending.xml

104 lines
2.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fa6e196973e45c0013c0801e01697757f4b98426 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="reflection.extending" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Étendre les classes</title>
<para>
Pour créer une version spéciale de
la classe interne (par exemple, pour créer une portion
HTML mise en évidence lors de l'export, pour avoir un accès
facile aux variables des membres au lieu des variables des
méthodes, ou bien pour avoir des méthodes utiles), il est possible
d'étendre la classe principale.
</para>
<example>
<title>Étendre les classes internes</title>
<programlisting role="php">
<![CDATA[
<?php
/**
* Ma 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());
}
}
/**
* Demo classe #1
*
*/
class T {
protected function x() {}
}
/**
* Demo classe #2
*
*/
class U extends T {
function x() {}
}
// Affichage des informations
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>
Si l'on écrase le constructeur, il faut se rappeler d'appeler
le constructeur parent avant d'insérer le moindre code.
Si on ne le fait pas, voici ce qui arrivera :
<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
-->