2009-09-12 15 views

Respuesta

6

No es una forma de autodestrucción un objeto:

Usar la matriz $GLOBALS para encontrar la instancia en que, a continuación, utilizar unset(). Tenga en cuenta que unset() no llama automáticamente el método mágico __destruct() todo el tiempo ...

Hay una nota tan de esta manera (véase la documentación unset()) en la documentación de PHP, pero no explica exactamente cuando lo hace unset() no llame al __destruct() método.

Y tenía este comportamiento específico:

hago:

unset($myInstance); 
$myInstance = clone $otherInstance; 

Y el __constructor se llama primero, luego el __destruct(). O Me gustaría que el __destruct() que se llamará en primer lugar porque es unset() antes clon ... I ma pegado con eso ahora ...

Nicolas.

+2

Los destructores son llamados en la recolección de basura o cuando termina la secuencia de comandos. – hakre

+0

Como ha dicho hakre, hasta que la variable $ myInstance esté fuera del alcance y la recolección de basura la recoja, no se invocará el destructor. – Swivel

0

No, no creo que exista. ¿Pero necesitarías tal cosa?

+1

Bueno, ¿por qué no? Si está creando un objeto, supondría que debería existir la capacidad de destruirlo. – Christian

+2

@Christian la capacidad de destruir un objeto leis en el mismo lugar donde la capacidad de crearlos, no dentro del objeto en sí. –

12

Si se llama a un método en el contexto del objeto, tiene que haber al menos una referencia a ese objeto. Y como php solo elimina objetos inalcanzables, la respuesta es: no.

Cuestiones relacionadas