¿Qué esperar de PHP5?

Publicado en PHP Avanzado por Webstudio el April 30th, 2003

Nuevo Modelo de Objetos

Definitivamente, el principal cambio que más ha resonado desde que se conoce que se está desarrollando PHP5, sin dudas es el cambio en el manejo de los objetos. En la actualidad, en PHP4, los objetos son tratados igual que otros tipos de datos básicos, como los enteros o los arreglos. O sea, cuando los programadores realizan operaciones sobre los objetos, como asignación de variables o cuando son pasados como parámetros a funciones, todo el objeto es copiado. Lamentablemente, este comportamiento (que fue más que nada heredado del PHP3 hacia el PHP4 , limita en gran medida el Modelo de Objetos, llevando generalmente a prácticas extras ( como el paso o el instanciamiento de objetos manualmente por referencia ) :

PHP:
  1. <?php
  2. class Marca
  3. {
  4.         var $nombre;
  5.        
  6.         function nombre($nombre)
  7.         {
  8.                 $this->nombre = $nombre;
  9.         }
  10. }
  11.  
  12. function cambiaNombre($bebida, $nombre)
  13. {
  14.         $bebida->nombre($nombre);
  15. }
  16.  
  17. // Evitamos una doble copia de objeto
  18. $bebida = &new Marca;
  19. $bebida->nombre('Coca-Cola');
  20. var_dump($bebida->nombre);
  21. cambiaNombre($bebida, 'Pepsi');
  22. echo "{$bebida->nombre} la opción de la nueva Generación\n";
  23.  
  24. /* Esto imprime en pantalla :
  25.      Coca-Cola la opción de la nueva Generación */
  26. ?>

Aqui vemos como el objeto que es "operado" dentro de la función cambiaNombre, no es más que una copia del objeto al que realmente queremos cambiar. Este tipo de comportamiento es justamente el que no siempre es el deseado ( de hecho, es muy raro que se necesite una copia del objeto ).

El nuevo Modelo de Objetos propuesto por PHP5, que se ha visto un poco influenciado por Java, se diferencia en que al crear un objeto, recibimos un apuntador hacia el objeto, y no el objeto en si mismo. Cuando este apuntador es pasado como parámetro a funciones, asignado o copiado, SOLO el apuntador es el pasado, asignado o copiado. El objeto nunca es copiado o duplicado, evitando comportamientos indeseados o una mala utilización de los recursos, al tener varias copias de un mismo objeto en memoria todo el tiempo. Esto mismo, también se aplica a los objetos que son devueltos por una función, no teniendo que declarar implícitamente en la definición de la función que se devolverá un objeto por referencia. Esto es muy útil sobre todo en algunos Patrones de Diseño (o Design Patterns), como el Singletron, que están pensados para siempre devolver una misma instancia de un objeto:

PHP:
  1. <?php
  2. function Singletron()
  3. {
  4.         static $instancia;
  5.         if(empty($instancia))
  6.         {
  7.                 $instancia = new Objeto();
  8.         }
  9.         return $instancia;
  10. }
  11.  
  12. $obj = Singletron();
  13. $obj->setMiembro("Un Valor");
  14. $obj = Singletron();
  15. echo $obj->getMiembro();
  16. /* Imprime : Un Valor */
  17. ?>

La "vieja" sintaxis de pasar objetos por referencia, seguirá funcionando, aunque con objetos, no será necesaria. Es posible que el Zend Engine 2 también venga con una directiva de configuración (en el php.ini) que indique que el PHP se comporte de manera igual que PHP4, con el paso de objetos por valor, pero que lanze un error E_NOTICE cada vez que esto suceda, de manera que los programadores puedan migrar gradualmente sus aplicaciones hacia el nuevo comportamiento.

Pero esta nueva cualidad en el manejo de los objetos en PHP5, que en si es muy útil, viene acompañada de otras características, derivadas de esta primera, que nos ayudarán aún más a programar más rápido y mejor. A continuación, enumeraremos algunas de las más importantes mejoras, relacionadas con el nuevo Modelo de Objetos.

Pages: 1 2 3 4 5 6 7 8

20 respuestas a '¿Qué esperar de PHP5?'

Suscríbete a los comentarios con RSS o realiza un TrackBack a '¿Qué esperar de PHP5?'.

  1. Gildus dijo,

    el January 11th, 2006 a las 11:05 pm

    Holas y que hay en esta version 5 del PHP sobre las librerias del PHP-GTK para programacion GUI del PHP???

    Habra mas novedades con respecto a eso???
    o aun no habra un compilador para el PHP-GTK???

    Esperemos que halla mas soporte para esto, porque me parece super el PHP-GTK.

    Saludos
    Gildus

  2. epplestun dijo,

    el January 21st, 2006 a las 9:45 pm

    Buenas Gildus, pues comentarte que PHP-GTK2 trabaja con PHP5.1.0 y aun esta en fase de dasarrollo, yo de momento lo utilizo para hacer pruebas y te puedo decir que funciona de maravilla :-)

  3. okoto dijo,

    el May 20th, 2006 a las 3:13 pm

    pues bien!
    parece que he encontrado un blog que leer!!!
    Esta chido!!!
    Un saludo y una felicitación!!!
    Un pregunta:

    Hay algo que deba saber acerca del módulo mail() en php 5?
    Es que recien migre de server y no funcionan mis formularios. (tenia php 4)

  4. german mazuera dijo,

    el August 16th, 2006 a las 12:50 pm

    Tengo fedora4 apache2 php5.
    Resulta que cuando envio correos a direcciones nombre@yahoo.com estos si llegan.
    Pero si envio a direcciones nombre@yahoo.com.ar o a nombre@telecom.com.co estos no llegan.
    Pregunto que me falta para que los correos lleguen a dominos:
    gov.co o com.co o com.ar?
    Gracias por ayudar

  5. Efren dijo,

    el October 12th, 2006 a las 7:53 am

    Hola, Quería saber algo más… ¿Es posible sobrecargar un constructor con pHP 5? Si es posible poner un ejemplo porfavor

  6. oscar dijo,

    el February 6th, 2007 a las 6:44 pm

    quisiera saber como manejo los blobs de mysql con una interfaz con php si me pedes ayudar con algunos tutoriales o paginas de visitas se lo agradecere

  7. chrishack dijo,

    el March 27th, 2007 a las 10:22 pm

    oye quiero un sistema de matricula en php
    el que lo tienes un favor que se lo pase y yo le dare programas para la elaboracion de webs

  8. Esteban dijo,

    el March 28th, 2007 a las 11:38 am

    Esa “sobrecarga de operadores” es el peor engendro que vi en mi vida. Por que en vez de hacer la funcion __call() no se ponen a hacer un sistema de sobrecarga como la gente?

  9. geidy dijo,

    el May 16th, 2007 a las 2:28 pm

    tengo un problema quisiera saber como se heredan formularios en php 5

  10. Jeski dijo,

    el June 15th, 2007 a las 1:17 pm

    Que tal, alguién podría decirme si con PHP se puede generar un archivo WAR o EAR, para publicarlo como se hace en JAVA.

    Saludos
    Jesus


  11. el June 26th, 2007 a las 8:19 pm

    hola megustaria que pusieran manuales sobre php5 o mas imformacion sobre las mejoras como ventas y desventajas que tiene.

    bueno saludos…


  12. el August 8th, 2007 a las 9:52 pm

    Hasta entonces, les deseo felices noches de programación extrema y grandes cantidades de cafeína para todos uds.

    Jajajajaja eso es cierto ya que la mejor hora que tengo es en la noche creo que no solamente a mi me pasa eso ….
    Pero bueno si alguien quiere aprender algo mas, debe de sacrificarse …..

    Salud2 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

  13. Solaris dijo,

    el September 18th, 2007 a las 9:38 am

    Hola.
    aquí: http://www.recursos-webmaster.es/programacion-php4-php5.php teneis algo de info sobre php4 vs php5. El principal problema es que las empresas de hosting compartido no se atreven a dar el paso. Dar a elegir entre php4 o php5 supone dos mantenimientos distintos y una migración drástica de php4 a php5 sería un desastre.
    En http://www.configbox.com ofrecen hosting barato con php5 dan 10 días de prueba si se pide… y php6 que se acerca. estarán las 3 versiones a la vez? :D
    Un saludo y enhorabuena por la página.

  14. Dilod dijo,

    el September 20th, 2007 a las 5:28 am

    Buenas
    Empiezo con el php5 tras muchos años con el php4, la verdad es que no hay muchos proveedores que lo ofrecen, supongo que porque la mayoria de los clientes aun no han hecho el cambio.
    Pues me he pillado un plan de prueba en http://www.configbox.com a ver que tal funciona, lo que me gustaria saber es la fiabilidad del php5, si alguien ha tenido problemas que no ha podido solucionar… lo bueno del php4 es que ya con los años, era bastante estable, pero es cierto que el php5 tiene pinta de ofrecer muchas mas ventajas.
    Por cierto, muy bueno el articulo, enhorabuena ;)
    Salu2

  15. Sarita dijo,

    el October 3rd, 2007 a las 7:03 pm

    aqui… donde estan las respuestas???? solo preguntas…

  16. Webstudio dijo,

    el October 3rd, 2007 a las 7:34 pm

    Probaste pasarte por el Foro?

  17. Anderson dijo,

    el December 12th, 2007 a las 3:27 pm

    hola k tal espero k estes bien bueno kiero un sistema en php para ingrsar notas del primer semestre al promedio el sistema es para un colegio de primaria y secundaria acanbio yo te pasare todos mis programas para realizar una web musical o ya sea un sistema en java

  18. Fran Haro dijo,

    el January 27th, 2008 a las 1:00 pm

    Hola a todos, muy bueno este sitio, sé muy poco de php, trabaje un poco con dreanwever, queria saber si hay un compilador de php5. Saludos

  19. manolo dijo,

    el April 24th, 2008 a las 1:51 pm

    Hola a todos nesecito una ayudeta con lo de php5 OO manejado por multicapa gracias


  20. el July 10th, 2008 a las 12:23 pm

    [...] un tiempo lei en este link, http://www.zonaphp.com/%C2%BFque-esperar-de-php5/6/, una especie de explicacion de como emular una [...]

Deja un comentario