mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-04-29 11:43:08 +02:00
b8daeaab85
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@78204 c90b9560-bf6c-de11-be94-00142212c4b1
159 lines
4.8 KiB
XML
159 lines
4.8 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision: 1.1 $ -->
|
|
<reference id="ref.classobj">
|
|
<title>Objets</title>
|
|
<titleabbrev>Classes et Objets</titleabbrev>
|
|
<partintro>
|
|
<section id="classobj.partintro">
|
|
<title>Introduction</title>
|
|
<section id="classobj.intro">
|
|
<title>About</title>
|
|
<para>
|
|
Ces fonctions permettent de gérer les classes et les objets.
|
|
Vous pouvez notamment connaître le nom de la classe d'un
|
|
objet, ses membres et ses méthodes, et tous les objets
|
|
parents (les classes qui sont étendues par la classe d'un objet).
|
|
</para>
|
|
</section>
|
|
<section id="classobj.example">
|
|
<title>Exemple d'utilisation</title>
|
|
<para>
|
|
Dans cet exemple, on définit une classe de base, et une
|
|
extension. La classe de base définit un légume, s'il est
|
|
mangeable ou pas, et sa couleur. La sous-classe
|
|
<varname>epinard</varname> ajoute une méthode pour le cuisiner,
|
|
et une autre pour savoir s'il est cuisiné.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>classes.inc</title>
|
|
<programlisting role="php">
|
|
<?php
|
|
// classe de base, avec ses membres et ses méthodes
|
|
class Legume {
|
|
var $mangeable;
|
|
var $couleur;
|
|
function legume( $mangeable, $couleur="green" ) {
|
|
$this->mangeable = $mangeable;
|
|
$this->couleur = $couleur;
|
|
}
|
|
function est_mangeable() {
|
|
return $this->mangeable;
|
|
}
|
|
function quelle_couleur() {
|
|
return $this->couleur;
|
|
}
|
|
} // fin de la classe Legume
|
|
// extend la classe de base
|
|
class Epinard extends Legume {
|
|
var $cuit = <literal>FALSE</literal>;
|
|
function Epinard() {
|
|
$this->Legume( <literal>TRUE</literal>, "green" );
|
|
}
|
|
function cuisine() {
|
|
$this->cuit = <literal>TRUE</literal>;
|
|
}
|
|
function est_cuit() {
|
|
return $this->cuit;
|
|
}
|
|
} // fin de la classe Epinard
|
|
?>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Lorsqu'on instantie deux objets de ces classes, et qu'on affiche
|
|
leurs informations, on affiche aussi leur héritage. On définit ici
|
|
des utilitaires qui servent essentiellement à afficher ces
|
|
informations proprement.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>test_script.php</title>
|
|
<programlisting role="php">
|
|
<pre>
|
|
<?php
|
|
include "classes.inc";
|
|
// utilitaires
|
|
function print_vars($obj) {
|
|
$arr = get_object_vars($obj);
|
|
while (list($prop, $val) = each($arr))
|
|
echo "\t$prop = $val\n";
|
|
}
|
|
function print_methods($obj) {
|
|
$arr = get_class_methods(get_class($obj));
|
|
foreach ($arr as $method)
|
|
echo "\tfunction $method()\n";
|
|
}
|
|
function class_parentage($obj, $class) {
|
|
global $$obj;
|
|
if (is_subclass_of($$obj, $class)) {
|
|
echo "L'objet $obj belongs to class ".get_class($$obj);
|
|
echo " est une sous-classe de $class\n";
|
|
} else {
|
|
echo "L'objet $obj n'est pas une sous classe $class\n";
|
|
}
|
|
}
|
|
// instantie 2 objets
|
|
$legume = new Legume(TRUE,"blue");
|
|
$feuilles = new Epinard();
|
|
// affiche les informations sur ces objets
|
|
echo "legume: CLASS ".get_class($legume)."\n";
|
|
echo "feuilles: CLASS ".get_class($feuilles);
|
|
echo ", PARENT ".get_parent_class($feuilles)."\n";
|
|
// affiche les propriétés du légume
|
|
echo "\nlégume: Propriétés \n";
|
|
print_vars($legume);
|
|
// et les méthodes de "feuilles"
|
|
echo "\nfeuilles: Methods\n";
|
|
print_methods($feuilles);
|
|
echo "\nParentée:\n";
|
|
class_parentage("feuilles", "Epinard");
|
|
class_parentage("feuilles", "Legume");
|
|
?>
|
|
</pre>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Il est important de noter que dans les exemples ci-dessus, les objets
|
|
<varname>$feuilles</varname> sont une instance de
|
|
<classname>Epinard</classname> qui est une sous-classe de
|
|
<classname>Legume</classname>, donc la dernière partie du script
|
|
va afficher :
|
|
</para>
|
|
<para>
|
|
<informalexample>
|
|
<screen>
|
|
[...]
|
|
Parentée:
|
|
L'objet feuilles n'est pas une sous classe Spinach
|
|
L'objet feuilles est une sous-classe de Legume
|
|
</screen>
|
|
</informalexample>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
</partintro>
|
|
&reference.classobj.functions;
|
|
|
|
</reference>
|
|
<!-- 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:"../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
-->
|
|
|