cvs: phpdoc-es /reference/classobj reference.xml

From: Date: Sat, 08 Jun 2002 18:23:24 +0000
Subject: cvs: phpdoc-es /reference/classobj reference.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969346262@lists.php.net to get a copy of this message
rafael Sat Jun 8 14:23:24 2002 EDT Modified files: /phpdoc-es/reference/classobj reference.xml Log: Translation updated to PHP 4.x Index: phpdoc-es/reference/classobj/reference.xml diff -u phpdoc-es/reference/classobj/reference.xml:1.2 phpdoc-es/reference/classobj/reference.xml:1.3 --- phpdoc-es/reference/classobj/reference.xml:1.2 Mon Apr 15 20:29:47 2002 +++ phpdoc-es/reference/classobj/reference.xml Sat Jun 8 14:23:23 2002 @@ -1,7 +1,171 @@ <?xml version="1.0" encoding="iso-8859-1"?> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.3 Maintainer: rafael Status: ready --> <reference id="ref.classobj"> <title>Funciones de Clases/Objectos</title> - <titleabbrev>Clases/Objectos</titleabbrev> + <titleabbrev>Clases/Objetos</titleabbrev> + + <partintro> + <section id="classobj.intro"> + &reftitle.intro; + <para> + Estas funciones permiten obtener informacion sobre clases y + objetos. Se puede obtener el nombre de la clase a la que + pertenece un objeto, asi como las propiedades de sus miembros + y m&eacute;todos. Usando estas funciones se puede obtener no solo + lo comentado en la frase anterior, tambien se puede obtener + la familia del objeto (p.ej. que clase est&aacute; extendiendo la + clase a la que pertenece el objeto) + </para> + </section> + <section id="classobj.examples"> + &reftitle.examples; + <para> + En este ejemplo, definimos primero una clase base y una extensi&oacute;n + de esta clase. La clase base define un vegetal gen&eacute;rico, si es comestible + y su color. La subclase <varname>Spinach</varname> a&ntilde;ade + un metodo para cocinarlo y otro para saber si esta cocinado. + </para> + <para> + <example> + <title>classes.inc</title> + <programlisting role="php"> +<![CDATA[ +<?php + +// base class with member properties and methods +class Vegetable { + + var $edible; + var $color; + + function Vegetable( $edible, $color="green" ) { + $this->edible = $edible; + $this->color = $color; + } + + function is_edible() { + return $this->edible; + } + + function what_color() { + return $this->color; + } + +} // end of class Vegetable + +// extends the base class +class Spinach extends Vegetable { + + var $cooked = false; + + function Spinach() { + $this->Vegetable( true, "green" ); + } + + function cook_it() { + $this->cooked = true; + } + + function is_cooked() { + return $this->cooked; + } + +} // end of class Spinach + +?> +]]> + </programlisting> + </example> + </para> + <para> + Creamos 2 objetos de estas clases e imprimimos informaci&oacute;n sobre + ellos, incluyendo la jerarquia de clases a la que pertenecen. + Tambi&eacute;n definimos algunas funciones, especialmente para + imprimir las variables de una manera ordenada. + </para> + <para> + <example> + <title>test_script.php</title> + <programlisting role="php"> +<![CDATA[ +<pre> +<?php + +include "classes.inc"; + +// utility functions + +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 "Object $obj belongs to class ".get_class($$obj); + echo " a subclass of $class\n"; + } else { + echo "Object $obj does not belong to a subclass of $class\n"; + } +} + +// instantiate 2 objects + +$veggie = new Vegetable(true,"blue"); +$leafy = new Spinach(); + +// print out information about objects +echo "veggie: CLASS ".get_class($veggie)."\n"; +echo "leafy: CLASS ".get_class($leafy); +echo ", PARENT ".get_parent_class($leafy)."\n"; + +// show veggie properties +echo "\nveggie: Properties\n"; +print_vars($veggie); + +// and leafy methods +echo "\nleafy: Methods\n"; +print_methods($leafy); + +echo "\nParentage:\n"; +class_parentage("leafy", "Spinach"); +class_parentage("leafy", "Vegetable"); +?> +</pre> +]]> + </programlisting> + </example> + </para> + <para> + One important thing to note in the example above is that + the object <varname>$leafy</varname> is an instance of the class + <classname>Spinach</classname> which is a subclass of + <classname>Vegetable</classname>, + therefore the last part of the script above will output: + </para> + <para> + <informalexample> + <programlisting> +<![CDATA[ + [...] +Parentage: +Object leafy does not belong to a subclass of Spinach +Object leafy belongs to class spinach a subclass of Vegetable +]]> + </programlisting> + </informalexample> + </para> + </section> + </partintro> &reference.classobj.functions; @@ -22,5 +186,8 @@ 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 -->

« previous php.doc (#969346262) next »