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é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á 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ón + de esta clase. La clase base define un vegetal genérico, si es comestible + y su color. La subclase <varname>Spinach</varname> añ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ón sobre + ellos, incluyendo la jerarquia de clases a la que pertenecen. + Tambié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 -->