Files
doc-fr/language/oop5/references.xml
George Peter Banyard c4151d03e2 Apply commit a9edd62d087ab1eb6292c795b7256e14ff9f1234
Refactor OO section
2021-01-13 06:10:26 +00:00

91 lines
2.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a9edd62d087ab1eb6292c795b7256e14ff9f1234 Maintainer: jpauli Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="language.oop5.references" xmlns="http://docbook.org/ns/docbook">
<title>Objets et références</title>
<para>
Un des piliers de la POO de PHP est le fait que les
"objets sont passés par référence par défaut". Ce n'est pas complètement vrai.
Cette section rectifie cette généralisation avec quelques exemples.
</para>
<para>
Une référence PHP est un alias, qui permet à deux variables différentes de
représenter la même valeur. Dans PHP, une variable objet
ne contient plus l'objet en lui-même comme valeur. Elle contient seulement un identifiant
d'objet, qui permet aux accesseurs d'objets de trouver cet objet.
Lorsque l'objet est utilisé comme argument, retourné par une fonction,
ou assigné à une autre variable, les différentes variables ne sont pas
des alias : elles contiennent des copies de l'identifiant, qui pointent sur
le même objet.
</para>
<example>
<title>Références et Objets</title>
<programlisting role="php">
<![CDATA[
<?php
class A {
public $foo = 1;
}
$a = new A;
$b = $a; // $a et $b sont des copies du même identifiant
// ($a) = ($b) = <id>
$b->foo = 2;
echo $a->foo."\n";
$c = new A;
$d = &$c; // $c et $d sont des références
// ($c,$d) = <id>
$d->foo = 2;
echo $c->foo."\n";
$e = new A;
function foo($obj) {
// ($obj) = ($e) = <id>
$obj->foo = 2;
}
foo($e);
echo $e->foo."\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
2
2
2
]]>
</screen>
</example>
</sect1>
<!-- 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
-->