Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NET
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
PORTADA Actualidad
VIDEOS
ETIQUETAS
Desarrollo Web
Tecnologa
Buscando artculos de calidad para compartir con ustedes, encuentro un reciente y magnfico artculo (Object-Oriented PHP for Beginners) extrado del libro Pro PHP and jQuery, que a continuacin se los muestro, pero en nuestro idioma. He incluido los ejemplos online, para que podamos apreciarlos mejor. Y es que, para muchos programadores, la programacin orientada a objetos es un concepto aterrador, con una sintaxis muy complicada y otros temores. As pues, en este artculo aprenderemos los conceptos detrs de la Programacin Orientada a Objetos con PHP (PHP OOP), un estilo de programacin en el que las acciones relacionadas son agrupadas en clases para facilitar la creacin de un cdigo ms compacto y efectivo...
La programacin orientada a objetos es un estilo de programacin que nos permite (a los desarrolladores) agrupar tareas similares en clases. Esto ayudar a que nuestro cdigo mantenga el principio "No te repitas" (en ingls Don't Repeat Yourself o DRY, la wikipedia lo define) y as, mantenerlo
1 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
fcilmente. Uno de los mayores beneficios de la programacin DRY es que, si una pieza de informacin cambia en tu programa, usualmente slo se requerir un cambio para actualizar el cdigo. Uno de las ms grandes pesadillas para los desarrolladores es mantener el cdigo cuando los datos se declaran una y otra vez, lo que significa que cualquier cambio al programa se convierte en un juego, infinitamente ms frustrante, que el Dnde est Waldo?, donde hay que atrapar el contenido y funcionalidad duplicada. OOP es intimidante para muchos de los desarrolladores porque nos introduce a una nueva sintaxis y, a simple vista, parece ser ms complejo que el sencillo cdigo estructurado o en lnea. Sin embargo, una observacin ms avispada, nos mostrar que OOP es en realidad un enfoque, en ltima instancia, sencillo y simple, de programacin.
Antes de profundizar en la OOP, debemos tener una comprensin bsica de las diferencias entre Objetos y Clases. En esta seccin veremos como se construyen las clases, sus diferentes capacidades y algunos usos.
2 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
De buenas a primeras, hay una confusin en OOP: Desarrolladores experimentados empiezan a hablar sobre objetos y clases, y estos parecen ser trminos intercambiables. Esto no es as, sin embargo, la diferencia puede ser un poco complicada de entender a primera vista. Una clase, por ejemplo, es como el plano de una casa. Define la forma de la casa en un papel, y establece las conexiones entre las diferentes partes de la casa claramente. An cuando la casa todava no existe. Un objeto, entonces, es como una casa, construida de acuerdos al plano. Los datos que se almacenan en el objeto son como la madera, cables y concreto que componen la casa: Si la casa se hubiera montado sin un plano, slo sera una pila de cosas. Sin embargo, cuando todo se junta, se convierte en una organizada y til casa. Las clases son la estructura de los datos y acciones, y usan esta informacin para construir objetos. Ms de un objeto puede ser construido de la misma clase y al mismo tiempo; estos objetos son independientes los unos de los otros. Continuando con nuestra construccin analgica, esto es similar a un condominio que puede ser construido con el mismo plano: 150 casas distintas, que lucen igual, pero que tienes diferentes familias y decoraciones por dentro.
La sintaxis para crear una clase es muy sencilla: Declara una clase usando la palabra class, seguida del nombre de la clase y un set de llaves ({}): <?php class MyClass { // Los mtodos y propiedades de la clase van aqu } ?> Despus de crear la clase, una nueva clase puede ser instanciada y almacenada en una variable usando la palabra new:
3 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
<?php $obj = new MyClass; ?> Para ver el contenido de la clase, podemos usar la funcin var_dump(): <?php var_dump($obj); ?> Prueba este proceso, colocando el siguiente cdigo en un nuevo archivo llamado test.php (en tu localhost): <?php class MyClass { // Los mtodos y propiedades de la clase van aqu } $obj = new MyClass; var_dump($obj); ?> Carga la pgina en tu navegador en http://localhost/test.php y la siguiente lnea debe aparecerte: 1. object(MyClass)#1 (0) { } De esta sencilla manera, haz completado tu primer script con OOP.
Para agregar datos a la clase se usan las propiedades, o las variables de una clase especfica. stas, trabajan exactamente igual que una variable comn y corriente, excepto que ellas estn enlazadas al objeto y, por lo tanto, slo se puede acceder a ellas mediante l. Para aadir una propiedad a MyClass, aade el siguiente codigo en tu script:
4 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
<?php class MyClass { public $prop1 = "Soy la propiedad de una clase!"; } $obj = new MyClass; var_dump($obj); ?> La palabra public determina la visibilidad de la propiedad, aprenders un poco ms sobre esto en unos momentos. Luego, la propiedad es llamada usando la sintaxis estndar de una variable, y un valor le es asignado (Aunque, las propiedades de una clase no necesitan de un valor inicial). Para leer esta propiedad e imprimirla en el navegador, vamos a hacer referencia al objeto que la contiene: <?php echo $obj->prop1; ?> Debido a que pueden existir mltiples instancias de una clase, si el objeto no es referenciado individualmente, el script ser incapaz de determinar cual objeto leer. El uso de la flecha (->) es un operador OOP que accede al contenido de propiedades y mtodos de un objeto dado. Modifica el script en test.php para imprimir la propiedad en vez de volcar toda la clase, modificando el cdigo como se muestra: <?php class MyClass { public $prop1 = "Soy la propiedad de una clase!"; } $obj = new MyClass; echo $obj->prop1; // Imprime la propiedad
5 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
?> Recarga el navegador y ahora aparecer lo siguiente: Soy la propiedad de una clase!
Los mtodos son las funciones de una clase especfica. Es decir, que las acciones individuales que un objeto ser capaz de realizar, estn definidas, dentro de una clase, como mtodos. Por ejemplo, para crear mtodos que establecen y obtienen el valor de una propiedad $prop1, aade lo siguiente a tu cdigo: <?php class MyClass { public $prop1 = "Soy la propiedad de una clase!"; public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "<br />"; } } $obj = new MyClass; echo $obj->prop1; ?> Nota: OOP permite a los objetos referenciarse a si mismos utilizando $this. Cuando trabajamos con un mtodo, usa $this de la misma manera que usaras el nombre del objeto fuera de la clase. Para usar estos mtodos, hay que llamarlos como a cualquier
6 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
funcin; pero primero, hay que referenciar al objeto que lo contiene. Imprime la propiedad de MyClass, cambia su valor e imprmelo otra vez, realizando las modificaciones que a continuacin se indican. <?php class MyClass { public $prop1 = "Soy la propiedad de una clase!"; public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "<br />"; } } $obj = new MyClass; echo $obj->getProperty(); // Imprime el valor de la propiedad $obj->setProperty("Soy el nuevo valor de la propiedad!"); // Establece un valor nuevo echo $obj->getProperty(); // Imprime nuevamente para ver el cambio ?> Recarga el navegador, y vers lo siguiente: Soy la propiedad de una clase! Soy el nuevo valor de la propiedad!
7 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
<?php class MyClass { public $prop1 = "Soy la propiedad de una clase!"; public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "<br />"; } } // Create two objects $obj = new MyClass; $obj2 = new MyClass; // Get the value of $prop1 from both objects echo $obj->getProperty(); echo $obj2->getProperty(); // Set new values for both objects $obj->setProperty("Soy el nuevo valor de la propiedad!"); $obj2->setProperty("Yo pertenezco a la segunda instancia!"); // Output both objects' $prop1 value echo $obj->getProperty(); echo $obj2->getProperty(); ?> Cuando recargues el navegador, aparecer lo que sigue:
8 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
Soy la propiedad de una clase! Soy la propiedad de una clase! Soy el nuevo valor de la propiedad! Yo pertenezco a la segunda instancia! Como puedes ver, OOP mantiene los objetos como entidades separadas, lo que facilita la separacin de diferentes piezas de cdigo en pequeos, pero relacionados, paquetes. De esta manera ya tenemos claro lo que es la programacin orientada a objetos, el concepto de Clases y Objetos, la distincin entre ellos, y las definiciones de propiedades y mtodos. Todo breve y claramente explicado. An faltan ms aspectos que comentar sobre PHP OOP, pero quedarn pendientes para un post posterior. Este artculo contina en las siguientes dos partes: PHP Orientado a Objetos for Beginners II PHP Orientado a Objetos for Beginners III Fuente: Este artculo es un extracto del libro Pro PHP and jQuery, en ingls: Object-Oriented PHP for Beginners.
9 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
10 de 11
http://www.baluart.net/articulo/php-orientado-a-objetos-for-beginners
TUTORIALES
ARTCULO RECOMENDADO
CATEGORAS Actualidad Cultura Desarrollo Web Diseo Grfico Entretenimiento General Marketing Tecnologa
RECOMENDAMOS Slo Photoshop ZonaMasters GossipSphere Almadark Weblog Jhonnyt Weblog Medicina Natural
Cmo usar ems en vez de pixeles para la tipografa de nuestro diseo web
En aos pasados, los diseadores de pginas web utilizaban...
Weblog
Videos
Categoras
En Ingls
Privacy policy
Contacto
Copyright 2005 - 2012 - Baluart.NET. Todos los derechos compartidos. Creative Commons.
11 de 11