2011-11-22 11 views

Respuesta

6

Si se utiliza PHP5, no hay diferencia.

Si utiliza PHP4, el primero pasa una referencia al nuevo objeto.

Esto se debe a que "nuevo" no devuelve una referencia por defecto, sino que devuelve una copia.

Source.

Give this a read, too.

+0

En PHP4, ¿qué diferencia va a tener una referencia al nuevo objeto de hacer? – Casebash

+1

@Casebash: PHP4 copia instancias de objetos en lugar de pasar referencias de forma predeterminada. '&' es el operador * de referencia *. – alex

3

¿Cómo usar PHP5? A continuación, debe usar lo siguiente:

$myVar=new MyClass(); 

Esta es la forma aceptada de inicializar una clase.


Usando la siguiente E_STRICT cuando está habilitado:

$myVar=&new MyClass(); 

hará que los tiempos de ejecución de PHP para elevar la alerta Deprecated: Assigning the return value of new by reference is deprecated.

+0

¿Por qué genera una advertencia? ¿Qué puede ir mal? – Casebash

+0

@Casebash: Es solo una sugerencia de que el comportamiento ha cambiado desde la versión principal anterior y que el comportamiento ahora es implícito, supongo. – alex

+0

@Casebash: es comportamiento obsoleto. No hay ninguna razón en PHP5 por la que pondría '&' delante de una inicialización de instancia. –

0

&new ha sido eliminado de PHP7, en su lugar tiene que usar new.

Asignación de nuevo por referencia

Desde PHP 5.3 asignación de nuevas expresiones por referencias se obsoleto. Se puede reemplazar por una asignación normal 1):

// En lugar de $ obj = & new ClassName;

// Escribe $ obj = new ClassName;

La asignación del valor de retorno por referencia ya no es necesaria desde PHP 5.0.

Comprobar este hilo https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7

Cuestiones relacionadas