Files
doc-fr/reference/reflection/extending.xml
Yannick Torres 81574bd500 sync with EN
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@313926 c90b9560-bf6c-de11-be94-00142212c4b1
2011-07-29 14:40:49 +00:00

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 la classe</title>
<para>
Si vous voulez créer une version spéciale de
la classe interne (par exemple, pour créer une portion
HTML mis 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), vous
pouvez étendre la classe principale.
</para>
<example>
<title>Étendre les classes internes</title>
<programlisting role="php">
<![CDATA[
<?php
/**
* Mon 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 vous écrasez le constructeur, souvenez-vous d'appeler
le constructeur parent avant d'insérer le moindre code.
Si vous ne le faîtes 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
-->