¿Qué esperar de PHP5?
Unificación de Constructores
Hasta ahora, para crear un constructor de una clase (o sea, una función que se ejecuta cada vez que se instancia un nuevo objeto de esa clase), era necesario llamar a un método de la misma manera que la clase. Este método entonces, era automáticamente ejecutado por el ZE (Zend Engine). Para llamar al constructor de una super clase (algo muy común en POO), entonces era necesario saber el nombre de la clase a la cual nuestro objeto extiende :
-
<?php
-
class Foo
-
{
-
function Foo()
-
{
-
print "Mucho gusto, soy el constructor de Foo.";
-
}
-
}
-
class Bar extends Foo
-
{
-
function Bar()
-
{
-
parent::Foo();
-
print "Que tal? Yo soy el constructor de Bar.";
-
}
-
}
-
class FooBar extends Bar
-
{
-
function FooBar()
-
{
-
parent::Bar();
-
print "Yo soy una tercera Clase para mostrar el ejemplo";
-
}
-
}
-
?>
En el ejemplo, tenemos tres clases, FooBar que extiende a Bar, y ésta última que extiende a Foo. Ahora, por un momento supongamos que queremos mover a FooBar dentro del árbol de jerarquía, ahora extendiendo a Foo en vez de extender a Bar. Para ello, no solo sería necesario cambiar el "extends Bar" por un "extends Foo" sino que además deberíamos cambiar el nombre del método a llamar en el constructor.
En realidad, actualmente existe una "solución" a este problema. En base a mi experiencia anterior en otros proyectos en los que necesitabamos resolver este pequeño "inconveniente", es que llegamos a una solución de este estilo :
-
<?php
-
class A
-
{
-
function A($mensaje)
-
{
-
echo "Dentro de a: $mensaje<br>";
-
}
-
function getPadre()
-
{
-
}
-
function constructorPadre()
-
{
-
if(($padre=$this->getPadre())== NULL) return;
-
}
-
}
-
class B extends A
-
{
-
function B($mensaje1, $mensaje2)
-
{
-
$this->constructorPadre($mensaje1);
-
echo "Dentro de b: $mensaje2";
-
}
-
}
-
$B = new B("Mensaje para A", "Mensaje para B");
-
?>
Lo que hacemos entonces, es crear un método, dentro de una super clase que [b]nuestros objetos extenderán[/b], que una vez invocado, lo que hace es:
- Recibir los parámetros que le mandemos
- Averiguar el nombre de la SuperClase
- Si existe una SuperClase, entonces llamar a su constructor, pasándole los parámetros recibidos.
De esta manera, ya no importa conocer el nombre de la Super Clase, es el método mismo el que la averigua y la adapta en caso de que nuestro objeto sea movido dentro de la jerarquía de clases, siempre y cuando cuente con estos métodos disponibles. Afortunadamente, en PHP5, ya no tendremos que buscar soluciones caseras para este problema, dado que sea ha unificado el nombre que deben tener los métodos constructores. El mismo es "__construct" (con doble guión bajo al comienzo).
-
<?php
-
class Foo
-
{
-
var $variable;
-
function __construct()
-
{
-
$this->variable = 'Utilizando objetos con el nuevo constructor __construct';
-
}
-
}
-
$f = new Foo();
-
?>
Así, el problema anterior queda completamente resuelto, con un nombre estándar para nuestros constructores, ya no hay problemas de tener que cambiar nuestro código, en el caso de que nuestras clases sean cambiadas de lugar. Por compatibilidad con el código existente, el Zend Engine 2 (ZE2), primero buscará un método llamado '__construct' para ejecutarlo como constructor; de no encontrarlo, entonces buscará un método que se llame igual que la clase (simulando el comportamiento de PHP4).

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
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
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)
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
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
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
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
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?
el May 16th, 2007 a las 2:28 pm
tengo un problema quisiera saber como se heredan formularios en php 5
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
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…
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 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
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?
Un saludo y enhorabuena por la página.
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
el October 3rd, 2007 a las 7:03 pm
aqui… donde estan las respuestas???? solo preguntas…
el October 3rd, 2007 a las 7:34 pm
Probaste pasarte por el Foro?
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
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
el April 24th, 2008 a las 1:51 pm
Hola a todos nesecito una ayudeta con lo de php5 OO manejado por multicapa gracias
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 [...]