Programación Orientada a Objetos en PHP
Este artículo escrito originalmente por Luis Argerich nos introducirá a la Programación Orientada a Objetos (POO o su versión inglesa: OOP) en PHP. En él veremos la forma de programar menos y mejor usando conceptos de POO junto con algunos trucos de PHP.
Programación Orientada a Objetos en PHP
Algunos "puristas" afirmarán que PHP no es un verdadero lenguaje orienteado a objetos, lo que es cierto. PHP es un lenguaje híbrido dónde se pueden utilizar POO y programación estructurada tradicional. Pero para ciertos proyectos grandes, quizas deseemos/necesitemos(?) usar POO "pura" en PHP, declarando Clases y solo utilizando Objetos y Clases para el proyecto. Mientras emergen dia a dia proyectos más y más grandes, el uso de POO puede ayudar, el código POO es fácil de mantener, facíl de comprender y fácil de reusar. Y estos son los principios de la Ingeniería de Software. Aplicar estos conceptos en proyectos basados en la web, es la clave para el éxito de futurios sitios web.
Este artículo es una introducción a la Programación Orientada a Objetos en PHP. Intentaremos mostrarles como se puede programar menos y mejor utilizando algunos conceptos de POO y trucos de PHP. Buena Suerte !
Conceptos de programación orientada a objetos: aunque existen diferencias entre distintos autores, puedo decirles que un lenguaje de POO debe poseer:
- Tipos Abstractos de Datos y ocultamiento de la Información
- Herencia
- Polimorfismo
El encapsulamiento en PHP se logra utilizando clases:
-
<?php
-
class Algo
-
{
-
// En PHP, las clases usualmente se nombran con la primera letra en mayúscula.
-
var $x;
-
-
function setX($v)
-
{
-
// Los Métodos comienzan en minúscula y luego se usan mayúsculas para
-
// separar palabras en el nombre del método.
-
// Ejemplo : obtenerRaizCuadrada();
-
$this->x = $v;
-
}
-
-
function getX()
-
{
-
return $this->x;
-
}
-
}
-
?>
Por supuesto, cada uno puede utilizar la nomenclatura que desee, pero utilizar una estandarizada es útil.

el December 31st, 2005 a las 2:14 pm
Me parece muy bueno, pero te cuento lo que me paso, yo se mucho de php, pero nada de OOP si bien estoy leyendo mucho del tema, de este tutorial solo entendí menos del 50% y creo que es debido a la falta de ejemplos. No es una critica maligna solo lo que me parecio, por ejemplo en el tutorial de paginas modulares me parece que se entiende muchisimo mas, saludos!
el December 31st, 2005 a las 6:23 pm
Pues te diré, yo entendí o terminé de entender ciertas cosas de este artículo, la noche anterior a pasar los contenidos y republicarlo. Sucede que quizás este apuntando demasiado alto, lo cual siendo proveniente de Luis Argerich no me sorprenda tanto. Lo que veré de hacer es publicar algunas re-versiones de este artículo en el futuro, bajando un poco el nivel o haciéndolo un poco más didáctico, sin caer en el viejo y trillado ejemplo de “Este es un auto, y tiene un método acelerar()”, porque eso poco y nada tiene que ver con la real programación orientada a objetos.
Saludos y gracias por todos sus comentarios. ME sirevn mucho para enterarme lo que necesitan y como puedo agregar más contenidos.
el January 2nd, 2006 a las 12:22 pm
El articulo esta muy bien, y para los que no le entendieron les recomiendo leer mas a fondo lo que es la programacion orientada a objetos.
el January 16th, 2006 a las 12:34 pm
Bueno, el articulo esta bien, gracias a el he entendido bastantes cosas, aunque hay que tener en cuenta que habla sobre PHP4. En PHP5 se gana en POO, se pueden hacer la mayoria de cosas que en este manual se dice que no como: la posibilidad de poner atributos como protegidos, privados o publicos, crear clases abstractas y mas cosas.
Nota: SI me equivoco corregirme
el January 17th, 2006 a las 6:40 pm
La POO (Programacion Orientada a Objetos) es un topico complejo que se incia estudiando lo que es UML y programando en C++ que es una obligacion para todos los programadores para sentar las bases. Lastimosamente el autor del tutorial ha omitido partes esenciales en la explicacion, suponiendo que su auditorio esta al tanto de la POO. Honestamente la explicacion fue notoria, lo que me queda decir que las personas que estan en esta curva de aprendizaje, deben estudiar mucho mas las bases de la POO.
Saludos y animos a todos.
el January 17th, 2006 a las 9:24 pm
Lamento contradecirte, Carlos Xavier, en que para aprender POO no es necesario obligatoriamente nada. El C++ ofrece una versión parcializada de lo que se puede lograr con clases y yo diría que incluso Java no es un ambiente PURO orientado a objetos. Conoces Smalltalk? bueno, recién allí creo que tienes lo que yo consideraría escencial, aunque no obligatorio, no eso nunca.
Para aprender a POO si es “recomendable” conocer algo de UML, aunque lo básico es tan solo dejar de pensar en manera estructurada. Hacer un cambio en el pensamiento lineal de un problema, o de una librería de funciones, y comenzar a pensar más en las relaciones y en los mensajes. Después, si logras esto, con el tipo de dibujito que representes tus clases o el lenguaje en el que programes tus clases, es lo de menos.
Vamos, que aquí la idea es compartir y aprender con lo que cada uno sabe, y no venir a mostrar “la verdad”, que sabemos que nadie la tiene.
Saludos.
el February 12th, 2006 a las 5:25 pm
Bueno, solo queria decir que yo se programar mas o menos en php, este manual me parece muy interesante, pero puede resultar un poco dificil de entender, creo que lo completaria bastante un ejemplo real de utilizacion para entenderlo mejor.
Salud.
el February 18th, 2006 a las 11:17 pm
Miren, estoy en búsqueda de un servidor php disponible que me pueda enviar un formulario por e-mail, espero su respuesta
el February 19th, 2006 a las 4:31 pm
el curso es muy básico, donde puedo conseguir mas información?
el March 28th, 2006 a las 10:51 pm
me parece que le falta unos ejemplos y un poco mas de algoexpicito o entendible pór que la verdad se hace uno bolas con lo que aqui dice
el March 30th, 2006 a las 6:01 pm
Un poco basico pero la verdad cubre bastantes temas de la POO de una manera rapida, en mi opinion el manual trata de introducir sobre la POO usando PHP -y lo logra-, no es un curso de POO para eso hay cantidad de informacion en la red, no esperen que un solo documento les de todas las herramientas.
Lo que si me gustaria es la revisiòn del mismo teniendo la en cuenta los cambios introducidos con PHP5.
Saludos a todos
el April 27th, 2006 a las 3:54 pm
que sea mas esplicable con terminos que se manejan en la actualidad no con palabras de su propio lenguaje de programacion .
el April 28th, 2006 a las 12:11 pm
Bueno personalmente para mi POO es una manera de pensar completamente diferente a la estructurada, tu puedes programar muy bien en java (q es POO completo), como en php OO, xq lo q se rige en la POO es pensar en Objetos es pensar en atributos y funciones, y bueno complementarle la herencia, poliformismo y todas esas cosas de la teoria q en la practica sinceramente .. son BIEN PRACTICAS… mas q un manual de php en Objetos (si quieres entenderlo bien y APLICARLO BIEN!!!) creo un manual de la logica de la POO (atributos, funciones y defincion de un objeto) ayudaria bastante a q los q van a trabajar de esta manera puedan utilizar la programacion de manera provechoza, xq es facil aprender a programar en POO , pero saber aplicarla para q te ayude a tu Programacion sea de mas Calidad, utilziar menos recursos, etc etc etc… de ventajas q te da el POO , creo q es basico un manual de los q es POO , ayudaria bastante a enteder muchas cosas.. de ahi sale la cosecuencia del UML, java, php en OO y etc. de herramientas para la implementacion de un sistema q es OO, buneo esa es mi forma de pensar, puesto con OO llevo trabajando mas de 6 año y POO en php tengo 2 semanas y trabajo mas rapido de lo q trabajaba estrucuradamente en php, mi comentario (UN POCO LARGO NO!! jeje)
el May 8th, 2006 a las 10:19 pm
Gracias por el artículo, que en realidad es un excelente tutorial, que nos enseña de manera clara y directa, una forma para acometer el cambio que necesitamos los que tenemos muchos años con programación estructurada para adaptarnos al nuvo paradigma de programación, lo cual al menos en mi caso, reqiere bastante esfuerzo …
el June 2nd, 2006 a las 1:10 am
Pues yo entre aqui sin tener ni siquiera idea de la POO, solo habia usado VB 6.0 y tengo un poco con PHP, no aprendi a construir ninguna clase, pero acabo de comprender la POO que hasta miedo me daba jeje, se ve que es muy sencillo y práctico.
Muchas gracias por darte un tiempo para nosotros.
el June 19th, 2006 a las 7:12 pm
Saludos a Todos, sería interesante que estos cursos puedan ser tambièn publicados en formato .pdf ò .doc etc… Gracias al Autor y participantes por su tiempo. A!!!! sera que puedan recomendar si existe, una herramienta Visual de PHP y que esté orientada a objetos y eventos???….
el August 29th, 2006 a las 7:34 am
Sería posible obtenr el tutorial en formato pdf todo junto?
Gracias desde ya.
el September 1st, 2006 a las 7:08 pm
Espero me puedan colaborar con la siguiente inquietud, resulta que poseidon es una herramienta que ayuda a generar codigo java (clases - atributos - metodos), es decir que me deja listo la estructura para comenzar a codificar. en PHP existe alguna herramienta similar que me gener el codigo.
muchas gracias…
el September 5th, 2006 a las 12:22 am
No se si sera el lugar apropiado pero estoy haciendo una web y me gustaria que me dijeran como hago para trabajar con plantillas en php, me explico: supongamos q yo tengo una pagina q se llama index.php alli muestra la pagina principal pero si yo cliqueo en un elace por ejemplo servicios este se valla a index.php?id=servicios y me muestre la pagina de servicios para solo tener que modificar una pagina en caso de nesecitarlo pero que su contenido no me cambie.
el September 26th, 2006 a las 1:18 pm
me parece muy bien que haya codigos en php en la web para asi reutilizar esos códigos en mis tareas.
quisiera aprender como se hace este formulario para enviar comentarios
Estudiante de Informática…VI siclo
el October 17th, 2006 a las 9:43 pm
Pienso que faltan ejemplos.
el November 5th, 2006 a las 8:50 pm
Mi pregunta es la siguiente.
Yo uso la clase ADODB para PHP y queria saber si puedo usar esa clase dentro de otra clase.
podrias poner un ejemplo de un listado con una clase?.
POr ejemplo el listado de clientes.
Gracias!
el November 10th, 2006 a las 2:54 am
Hola a todos he venido trabajando un tiempo con POO pero en java llegando a crear mis componetes (.jar), ahora quiero saber si en php puedo crear componentes, ojala puedan ayudarme….
gracias!!
el December 30th, 2006 a las 1:00 am
tengo una duda…cuales serian las diferencias entre la programacion orientada a objetos y la programacion lineal…les agradeceria mucho si pudieran ayudarme
el February 6th, 2007 a las 7:13 am
Muchas gracias por el articulo, me ha ayudado bastante gracias a que viene todo muy bien resumido. A los que dicen que hacen falta más ejemplos me parece que deverian estar buscando articulos sobre POO en general, y no sobre como aplicar POO en PHP que es de lo que trata el artículo y lo explica de maravilla.
el March 9th, 2007 a las 2:58 pm
Me gusta!
Una sugerencia: http://anacarol.blog.br/?p=107 y sus otros articulos .
el March 27th, 2007 a las 1:30 pm
1.- Ya el artículo es viejo
2.- En PHP5 tenemos métodos destructores con __destruct() así como tenemos los constructores con __construct()
3.- La clonación de objetos se hace con la función clone
Hay algunos errores en los ejemplos :/ última recomendación, quítale el paginado y hazle anchors, al tutorial, y si quieres actualizarlo, sólo avísame, saludos.
el March 30th, 2007 a las 12:08 am
bueno a mi parecer tiene lo basico que hay que conocer sobre poo con php, sin embargo me gustaria que mostraran codigo donde implementen la agregacion y la composicion, del mismo modo como als otras caracteristicas de la poo.
en mi caso particular llevo tiempo buscando dichas implementaciones y no las he podido conseguir, si alguien conoce un link o puede fasciliatrme los ejmplos le agradeceria.
el March 30th, 2007 a las 3:50 pm
Estaría bueno que publicaran los tutoriales en pdf para poder descargarlos.
el May 17th, 2007 a las 3:44 pm
deberian ser mas especificos en cuanto a los programas
el June 15th, 2007 a las 1:07 pm
Me parece muy interesante estos artículos, bueno, ahora me dirijo a los comentarios, sobre que necesitan un ejemplo real aplicado, bueno si lo desean, pueden pedirlo en mi web, indicado mas arríba.
saludos coordiales
el June 24th, 2007 a las 11:20 am
Muy poco amigable la forma en que está explicado.
el July 14th, 2007 a las 12:40 pm
hola amigos si algui me posdria dsar una mano en cuanto se refiere a
como crear un bookmark
y como interactuar php com smarty y mvc
el August 1st, 2007 a las 12:23 pm
Empecé a aprender programación hace 8, sin ir a ningun curso ni comprar. Solamente siguiendo los tutoriales de los programas o en la web.
He hecho muchas aplicaciones concretas en PHP, pero nunca pude utilizar objetos, pues no me quedaba claro.
Pues bien, despues de leer este tutorial, siento que tengo los conceptos suficientes para utilizarlo.
Aclaro que tengo 72 años, y a esta edad los nuevos conceptos se resisten a entrar, por lo que felicito al autor
el September 9th, 2007 a las 12:04 am
Hola a todos,
la oop en php a mejorado mucho con php5, les recomiendo si quieren saber mas sobre oop aparte de lo basico, apliquen patrones de diseño, es una muy buena forma de ver los objetos en accion, y despues cuando lleguen al mundo java veran que muchas de esos patrones son parte integral del lenguaje, cosa en php nop es asi…
bueno
saludos.. cualquier cosa me dicen
bye
el October 22nd, 2007 a las 9:06 am
[...] Programación Orientada a Objetos en PHP [...]
el October 22nd, 2007 a las 7:30 pm
Me lei el tutorial completo pero me parece que esta muy mal explicado.
Saludos y ojala que reestructuren y cambien la forma de explicar este tema que cuando se parte es un poco complejo.
exito.
el November 6th, 2007 a las 8:13 am
Me parece un tutorial suficiente para iniciarse. Pero podrían utilizarse las nuevas carcaterísticas de orientación a objetos que incorpora PHP a partir de su 5ª versión (los objetos como referencias, el estatus de acceso a las propiedades y métodos, los métodos constructores, etc), ya que son éstas las que verdaderamente consiguen asimilar más a PHP con otros lenguajes que emplean el enfoque OO.
De todas formas, y a mi entender, con PHP no puedes crear un proyecto únicamente declarando clases, es decir, deberán existir scripts que creen los objetos y los utilicen de alguna forma. Esto implica que no es “puramente” orientado a objetos.
Si alguien desea comentar algo sobre estos temas le estaría agradecido.
Un saludo
el December 29th, 2007 a las 12:03 am
hola amigos bueno me pregunta es la siguiente siempre kerido acer una pagina web con panel de administrasion con sql pero no puedo acer todavia porke no tengo una ayuda alguin q me pueda ayudar ai dejo mi correo :: ovmsistemas@hotmail.com
gracias
el January 29th, 2008 a las 2:15 am
hola, tengo esta clase persona para añadir a una base de datos, el problema es que me sale el error, Fatal error: Call to undefined method persona::insetar_persona() in C:\wamp\www\clases\agregar_personas.php on line 9, la definición de la clase es la sgte:
nombre=$nom;
$this->telefono=$tel;
$this->direccion=$dir;
$this->correo=$mail;
}
function insertar_persona()
{
include”conectar_db.php”;
$link=coneccion();
$sql=”insert into personas (nombre,direccion,telefono,email) values ($this->nombre,$this->direccion,$this->telefono,$this->correo) “;
$result = mssql_query($sql,$link);
echo”registro insertado”;
}
}
?>
llamo la clase del sgte forma:
insetar_persona();
?>
no se que estoy haciendo mal, estoy usando wamp server 2.0.
quien pueda ayudar agradesco.
Jeison
el January 29th, 2008 a las 2:35 am
hola! ya solucione el problema estaba bien, el problema era la forma de llamar el metodo de la clase, me faltaba la r en insertar
insetar_persona(); y es
$nueva_persona->insertar_persona();
espero le sirva a alguien el código
Jeison
el February 20th, 2008 a las 3:33 pm
Recien empiezo a ver php lo basico… y no se como relacionar tablas y como poner ususario y clave en MySQL.. alguien me puede ayudar…
el June 9th, 2008 a las 5:33 pm
hola! ya solucione el problema estaba bien, el problema era la forma de llamar el metodo de la clase, me faltaba la r en insertar
insetar_persona(); y es
$nueva_persona->insertar_persona();
espero le sirva a alguien el código
el June 26th, 2008 a las 5:02 pm
Se entiende todo perfecto. Exelente articulo.
El que no lo entienda que empiece primero con algun manual de Php inicial
el July 30th, 2008 a las 12:06 am
[...] - ZonaPHP - Maestros del Web - PHP en castellano 0 Comments Read [...]
el August 19th, 2008 a las 11:18 pm
La POO, es una forma de programar un poco más complicada que la estructurada, pero tiene mucho más ventajas sobre todo cuando se trata de proyectos grandes. El uso de clases, objetos y métodos hace que lo forma de programacion sea más ordenada, limpia y mucho más facil de entender para otros programadores que tomen nuestro código. Recien llevo dos meses programando en PHP, y según sé con PHP 5 recien se puede aplicar la POO, aunque con algunas desventajas como la de las variables ya que aun no se definen como decimal, char, varchar, integer, etc