Programación Orientada a Objetos en PHP

Publicado en Prog. Orientada a Objetos por Webstudio el February 24th, 2003

La "Sobrecarga" ( que es diferente a la "Sobreescritura" ) no es soportada por PHP. En POO uno "sobrecarga" un método cuando se definen dos o tres métodos con el mismo nombre, pero con diferentes números o tipos de parámetros (dependiendo del lenguaje). No existen tipos de datos en PHP, así que sobrecargar por tipos de datos no funciona, sin embargo, sobrecargar por cantidad de parámetros tampoco existe.

Es muy útil a veces en POO sobrecargar los Constructores para poder instanciar el objeto de diferentes maneras (pasándole diferentes números de parámetros). Un truco para hacer esto en PHP es:

PHP:
  1. <?php
  2. class MiClase
  3. {
  4.         function MiClase()
  5.         {
  6.                 $nombre="MiClase".func_num_args();
  7.                 $this->$nombre();
  8.                 // Notar que $this->nombre(); generalmente estaría mal
  9.                 // pero aqui $nombre es un string con el nombre del
  10.                 // método que se va a llamar
  11.         }
  12.        
  13.         function MiClase1($x)
  14.         {
  15.                 //código;
  16.         }
  17.         function MiClase2($x,$y)
  18.         {
  19.                 //código;
  20.         }
  21. }
  22. ?>

Con este "trabajo extra" en la clase, el uso de la misma se vuelve transparente al usuario ( de la clase, no del sitio ) :

PHP:
  1. <?php
  2. $obj1=new MiClase('1'); // llamará a MiClase1
  3. $obj2=new MiClase('1','2'); // llamará a MiClase2
  4. ?>

Muchas veces esto es muy útil.

Pages: 1 2 3 4 5 6 7 8 9

44 respuestas a 'Programación Orientada a Objetos en PHP'

Suscríbete a los comentarios con RSS o realiza un TrackBack a 'Programación Orientada a Objetos en PHP'.

  1. Jorge dijo,

    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!

  2. Webstudio dijo,

    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.

  3. Fenix_Xanadu dijo,

    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.

  4. itu dijo,

    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


  5. 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.

  6. Webstudio dijo,

    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.

  7. Comentarista dijo,

    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.


  8. 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

  9. lokoloko dijo,

    el February 19th, 2006 a las 4:31 pm

    el curso es muy básico, donde puedo conseguir mas información?

  10. murcielago dijo,

    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

  11. cmpumarejo dijo,

    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

  12. franchesca dijo,

    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 .

  13. Lissette dijo,

    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)

  14. Pedro Frias dijo,

    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 …

  15. Edgar dijo,

    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.

  16. Paramaconny dijo,

    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???….

  17. Eduardo dijo,

    el August 29th, 2006 a las 7:34 am

    Sería posible obtenr el tutorial en formato pdf todo junto?
    Gracias desde ya.

  18. Wilmar dijo,

    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…

  19. Jorge dijo,

    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.

  20. johnny becerra dijo,

    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

  21. Isabel dijo,

    el October 17th, 2006 a las 9:43 pm

    Pienso que faltan ejemplos.

  22. garpo dijo,

    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!

  23. Yumi dijo,

    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!!

  24. alberto dijo,

    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

  25. KRL dijo,

    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.

  26. Ricardo dijo,

    el March 9th, 2007 a las 2:58 pm

    Me gusta!

    Una sugerencia: http://anacarol.blog.br/?p=107 y sus otros articulos .

  27. angvp dijo,

    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.

  28. guarus dijo,

    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.

  29. daniel dijo,

    el March 30th, 2007 a las 3:50 pm

    Estaría bueno que publicaran los tutoriales en pdf para poder descargarlos.


  30. el May 17th, 2007 a las 3:44 pm

    deberian ser mas especificos en cuanto a los programas

  31. Joe Black dijo,

    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

  32. Jose dijo,

    el June 24th, 2007 a las 11:20 am

    Muy poco amigable la forma en que está explicado.

  33. robert dijo,

    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

  34. Osvaldo dijo,

    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

  35. hectorjazz dijo,

    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


  36. el October 22nd, 2007 a las 9:06 am

    [...] Programación Orientada a Objetos en PHP [...]

  37. jorge dijo,

    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.

  38. Javier dijo,

    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

  39. kits dijo,

    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

  40. jeison dijo,

    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

  41. jeison dijo,

    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

  42. Luigi dijo,

    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…

  43. luxin_19 dijo,

    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

  44. Javi dijo,

    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

Deja un comentario