| ||||
Seguro; esa es la idea. No por nada el topic tiene entre parentesis (version BETA). EL desarrollo es tratar que entre los que quieran aportar mejores e ideas lo hagan en este topic que sin lugar a dudas esta desprolijo. Una vez terminado, se hace el trabajo mas facil.
__________________ | Cabeza De Raton | |
| ||||
Patrones Patrones Los patrones son una forma para describir buenos diseños y mejores practicas. Muestran una solucion flexible problemas comunes de programacion. Patterns are ways to describe best practices and good designs. They show a flexible solution to common programming problems. Factory La construccion de patrones permite la instanciacion de objetos en tiempo de ejecucion. Es llamado pa The Factory pattern allows for the instantation of objects at runtime. It is called a Factory Pattern since it is responsible for "manufacturing" an object. Example 19-23. Factory Method <?php class Example { // The factory method function &factory($type) { if (include_once 'Drivers/' . $type . '.php') { $classname = 'Driver_' . $type; return new $classname; } else { throw new Exception ('Driver not found'); } } } ?> Defining this method in a class allows drivers to be loaded on the fly. If the Example class was a database abstraction class, loading a MySQL and SQLite driver could be done as follows: <?php // Load a MySQL Driver $mysql = Example::factory('MySQL'); // Load a SQLite Driver $sqlite = Example::factory('SQLite'); ?> Singleton The Singleton pattern applies to situations in which there needs to be a single instance of a class. The most common example of this is a database connection. Implementing this pattern allows a programmer to make this single instance easily accessible by many other objects. Example 19-24. Singleton Function <?php class Example { // Hold an instance of the class static private $instance; // A private constructor private function __construct() { echo 'I am constructed'; } // The singleton method static public function singleton() { if (!isset(self::$instance)) { $c = __CLASS__; self::$instance = new $c; } return self::$instance; } // Example method public function bark() { echo 'Woof!'; } } ?> This allows a single instance of the Example class to be retrieved. <?php // This would fail because the constructor is private $test = new Example; // This will always retrieve a single instance of the class $test = Example::singleton(); $test->bark(); ?>
__________________ | Cabeza De Raton | |
| ||||
Menos mal que hiciste esta traduccion; no tenia mucha idea del tema y mezclado con mi ingles, podria haber sido catastrofico.
__________________ | Cabeza De Raton | |
| ||||
Metodos Magicos. Metodos Magicos Los nombres de las funciones __construct, __destruct (ver Constructores y Destructores), __call, __get, __set (ver Sobrecarga), __sleep, __wakeup, y _toString son "magicas" en clases de PHP. No se puede tener funciones con estos nombres en ninguna de nuestras clases a menos que se quiera el funcionamiento "magico" de las mismas. The function names __construct, __destruct (see Constructors and Destructors), __call, __get, __set (see Overloading), __sleep, __wakeup, and __toString are magical in PHP classes. You cannot have functions with these names in any of your classes unless you want the magic functionality associated with them. Cita: __sleep and __wakeupPrecaucion PHP reserva todos los nombes de las funciones comenzando con __ (doble guion bajo) como magica. Es recomendable no usar nombres de funciones que con __ en PHP a menos que se quiera algun funcionamiento magico documemntado. PHP reserves all function names starting with __ as magical. It is recommended that you do not use function names with __ in PHP unless you want some documented magic functionality. La funcion serializacion serialize () chequea si tu clase tiene una funcion con el nombre magico __sleep. Si es asi, la funcion es ejecutada antes que cualquier serializacion. Se puede limpiar el objeto y se suspende el retorno de un array con los nombres de todas las variables del objeto que deberian ser serializadas. serialize() checks if your class has a function with the magic name __sleep. If so, that function is executed prior to any serialization. It can clean up the object and is supposed to return an array with the names of all variables of that object that should be serialized. El uso programado de __sleep es para cerrar cualquier coneccion de base de datos que el objeto pueda llegar a tener, datos destinados pedientes o tareas de limpieza similares a efectuar. Ademas, la funcion es muy usada si se tiene objetos muy extensos que no necesitan ser completamente guardados. The intended use of __sleep is to close any database connections that the object may have, commit pending data or perform similar cleanup tasks. Also, the function is useful if you have very large objects which do not need to be saved completely. En cambio, la funcion unserialize() se usa para chequear la presencia de una funcion con el nombre magico __wakeup. Si esta presente, esta funcion puede reconstruir cualquier recursos que el objeto pueda tener.Conversely, unserialize() checks for the presence of a function with the magic name __wakeup. If present, this function can reconstruct any resources that the object may have. El uso programado de __wakeup es para reestablecer cualquier coneccion de base de datos que se pueda haber perdido durante la serializacion y otros tareas de reinicializacion pendientes. The intended use of __wakeup is to reestablish any database connections that may have been lost during serialization and perform other reinitialization tasks. __toString El metodo __toString permite a una clase decidir como "reaccionara" cuando es usada como un string. The __toString method allows a class to decide how it will react when it is converted to a string. Ejemplo 19-25. Ejemplo Simple Código PHP: Cita: Es un valor nulo que el metodo __toString solo sera llamado cuando este este diractemente combinado con echo() o print().Hola It is worth noting that the __toString method will only be called when it is directly combined with echo() or print(). Ejemplo 19-26. Casos de llamada a __toString Código PHP:
__________________ | Cabeza De Raton | Última edición por Calisco; 20/01/2005 a las 12:13 |
| ||||
Palabra Reservada FINAL Palabra Reservada FINAL PHP 5 introduce la palabra reservada final, la cual impide clases hijas desde un metodo que tiene el prefijo final en la definicion. Si la clase en si misma es definida como final entonces no puede ser extendida. PHP 5 introduces the final keyword, which prevents child classes from overriding a method by prefixing the definition with final. If the class itself is being defined final then it cannot be extended. Ejemplo 19-27. Ejemplo de Metodo FINAL Código PHP: Código PHP:
__________________ | Cabeza De Raton | |
| ||||
Bueno, yo tampoco se mucho de ingles; se debe notar bastante para alguien que sepa un poco mas. El tema es ayudar entre todos; yo creo que no tenemos porque adaptarnos a un idioma que no es el nuestro; por lo menos no deberia ser imprescindible saber ingles. . .
__________________ | Cabeza De Raton | Última edición por Calisco; 16/03/2005 a las 11:32 |
| ||||
Re: Traduccion POO en PHP5 (version BETA) Clonación de Objetos Object cloning Crear una copia de un objeto que duplique todos los valores de sus propiedades no siempre funciona como esperamos. Un buen ejemplo esta en la necesidad de copiar construcciones, de esta forma si tienes un objeto que representa una ventana GtK y el objeto es una fuente a esta ventana GTK, y cuando lo creas o duplicas buscas crear una nueva instancia del objeto con las mismas propiedades y tienes un nuevo objeto que es una fuente a una nueva ventana Gtk. Otro ejemplo es si su objeto mantiene una referencia a otro objeto que el usa y cuando lo duplicas el objeto padre, tu quieres crear una nueva instancia de este otro objeto asi que la replica tiene su copia por separado. Una copia de un objeto es creada usando la palabra reservada clone (que llama el método del objeto __clone() si es posible). Un metodo de objeto __clone() no puede ser llamado directamente. $copia_de_objeto = clone $objeto; Cuando un objeto es clonado, PHP5 realizara una copia a bajo nvel de todas las propiedades del objeto. Cualquier propiedad que sea referencia a otras variables mantendrá su referencia. Si un metodo __clone() es definido, entonces cuando un nuevo objeto sea creado, este metodo será llamado para controlar que propiedades deben ser cambiadas. Ejemplo 19.31. Clonando un Objeto Código PHP: Última edición por anthemfor182; 30/03/2007 a las 23:14 Razón: error |
| ||||
Re: Traduccion POO en PHP5 (version BETA) Comparando Objetos Comparing objects En PHP5, la comparación entre objetos es más complicada que en PHP4 y más de acuerdo a lo que uno esperaría de un lenguaje orientado a objetos (PHP5 es es un lenguaje de esos). Cuando se usa el operador de comparación (==), variables objetos son comparadas de una simple manera, a saber: Dos instancias de objetos son iguales si tienen los mismos atributos y valores, y las instancias son de una misma clase. Por otro lado, tenemos el operador idéntico (===), variables objetos son idénticos si y solo si se refieren a la misma instancia de la misma clase. Un ejemplo puede clarificar esas reglas: Example 19.32. Ejemplo de comparación de objetos en PHP 5 Código PHP: Última edición por anthemfor182; 30/03/2007 a las 23:10 Razón: error |
| ||||
Re: Traduccion POO en PHP5 (version BETA) Alusión de Tipos?? Type Hinting PHP 5 introduce Type Hinting. Las funciones ahora estan en la capacidad de forzar a que los parametros sean objetos(especificando el nombre de la clase en el prototipo de la función) ó arrays (desde PHP 5.1). Código PHP: Código PHP: Código PHP: |