FAQ
Saludos!!

alguien porfavor, podria explicarme, como si tuviera 5 años, para que me puede
servir un metodo _destruct().

Gracias!!!!

--
Germana Oliveira
germanaoliveirab_at_gmail_dot_com
Carabobo, Venezuela

Search Discussions

  • Nicolas Tolstow Capdevila at Sep 17, 2008 at 2:45 am
    Buenas Noches Germana

    La instrucción _destruct() se introdujo en PHP 5 y permite ejecutar un
    código al momento que:
    - Todas las referencias al objeto sean removidas
    - El objeto es explicitamente destruido

    Un pequeño ejemplo:

    Creamos una clase llamada prueba que contiene un "constructor" y un
    "destructor"

    <?php
    class prueba {
    // Aqui podemos declara las variables y funciones que utilizaremos
    en nuestra clase

    function __construct() {
    // Esta función se ejecutará en el momento que le "creamos" un
    objeto de la clase "prueba"
    // todas las instrucciones contenidos en esta función serán ejecutas
    automaticamente
    echo ("Hola Mundo\n");
    }

    function __destruct {
    // Esta función se ejecutará en el momento que el objeto ya no sea
    necesario y sea "eliminado"
    // todas las instrucciones se ejecutarán de forma automatica
    echo ("Aquí esta ejecutando el destructor de la clase \n");
    }
    }

    // aquí creamos un objeto de la clase prueba
    $variable = new prueba; // Aqui creamos un objeto, al hacer esto, la
    funcion __construct() se ejecuta
    ?> aquí tenemos el final de nuestro script y se ejecutará el desturctor
    definido en la clase "prueba"

    Este código produce el siguiente resultado:

    *Hola Mundo
    Aquí esta ejecutando el destructor de la clase*

    Lo que vemos reflejado es, que al momento de definir un objeto llamado
    $variable se ejecuta el codigo que colocamos en la funcion __construct()
    y, que al momento de terminar el script, que el objeto $variable es
    eliminado del sistema, se ejecuta automáticamente el código de la
    función __destruct()

    Esto nos permite poder ejecutar alguna acción especial que necesitemos
    al momento que el objeto sea eliminado.

    Puedes revisar en http://ve.php.net/language.oop5.decon

    Espero que te sirva esta pequeña explicación.

    Saludos,

    Nicolás

    ---------------------------------------------------------------------------

    germana oliveira escribió:
    Saludos!!

    alguien porfavor, podria explicarme, como si tuviera 5 años, para que me puede
    servir un metodo _destruct().

    Gracias!!!!
    --
    Nicolás Tolstow Capdevila

    Ram Head Technology, c.a.
    Caracas - Venezuela
  • Pablo Braulio at Sep 17, 2008 at 9:03 am

    Nicolas Tolstow Capdevila escribió:
    Buenas Noches Germana

    La instrucción _destruct() se introdujo en PHP 5 y permite ejecutar un
    código al momento que:
    - Todas las referencias al objeto sean removidas
    - El objeto es explicitamente destruido

    Un pequeño ejemplo:

    Creamos una clase llamada prueba que contiene un "constructor" y un
    "destructor"

    <?php
    class prueba {
    // Aqui podemos declara las variables y funciones que utilizaremos
    en nuestra clase

    function __construct() {
    // Esta función se ejecutará en el momento que le "creamos" un
    objeto de la clase "prueba"
    // todas las instrucciones contenidos en esta función serán ejecutas
    automaticamente
    echo ("Hola Mundo\n");
    }

    function __destruct {
    // Esta función se ejecutará en el momento que el objeto ya no sea
    necesario y sea "eliminado"
    // todas las instrucciones se ejecutarán de forma automatica
    echo ("Aquí esta ejecutando el destructor de la clase \n");
    }
    }

    // aquí creamos un objeto de la clase prueba
    $variable = new prueba; // Aqui creamos un objeto, al hacer esto, la
    funcion __construct() se ejecuta
    ?> aquí tenemos el final de nuestro script y se ejecutará el desturctor
    definido en la clase "prueba"

    Este código produce el siguiente resultado:

    *Hola Mundo
    Aquí esta ejecutando el destructor de la clase*

    Lo que vemos reflejado es, que al momento de definir un objeto llamado
    $variable se ejecuta el codigo que colocamos en la funcion __construct()
    y, que al momento de terminar el script, que el objeto $variable es
    eliminado del sistema, se ejecuta automáticamente el código de la
    función __destruct()

    Esto nos permite poder ejecutar alguna acción especial que necesitemos
    al momento que el objeto sea eliminado.

    Puedes revisar en http://ve.php.net/language.oop5.decon

    Espero que te sirva esta pequeña explicación.
    Excelente explicación.

    Yo también estaba perdido en esto.

    Entonces, es como si dijéramos que se ejecuta un segundo constructor,
    sólo que este se hace al final de la ejecución de la clase, ¿no?.


    Gracias por la info.
    - --
    Saludos cordiales.
    Pablo.
  • Gustavo Pardo at Sep 17, 2008 at 2:48 am
    El Tue, 16 Sep 2008 21:15:12 -0430
    germana oliveira <germanaoliveirab@gmail.com> escribió:
    Saludos!!

    alguien porfavor, podria explicarme, como si tuviera 5 años, para que me
    puede servir un metodo _destruct().

    Gracias!!!!
    hola,

    por ejemplo en una clase que te maneja la conexión a una base de datos
    transaccional, le mandás la consulta del COMMIT en el __destruct y te asegurás
    que previamente ingresaron todas las consultas.

    --
    Gustavo Pardo
    Dataneu Argentina
    Software & Web Hosting
    Mail: gustavo.pardo@dataneu.com
    Web: http://dataneu.com/
    Tel.(+54 299) 489 6880
    Centenario, NQN - Argentina
  • Pablo Braulio at Sep 17, 2008 at 9:03 am

    hola,

    por ejemplo en una clase que te maneja la conexión a una base de datos
    transaccional, le mandás la consulta del COMMIT en el __destruct y te asegurás
    que previamente ingresaron todas las consultas.
    Esto es interesante, pues nunca me he encontrado con la necesidad de
    usar un destructor. Puede que sea por ignorancia.

    ¿Podrías poner un ejemplo de esto que dices?.
    - --
    Saludos cordiales.
    Pablo.
  • Victor Estevez at Sep 17, 2008 at 9:32 am
    Hola.

    El __destruct se puede utilizar tambien si utilizas sesiones gestionadas
    por ti mismo para cerrarlas, o como comentan para cerrar las consultas a
    la base de datos.

    En otros lenguajes (c++ por ejemplo), se utiliza mucho el destructor
    para liberar memoria y borrar variables, pero eso PHP ya lo hace por
    nosotros, aunque quizas en algo complicado que maneje muchos datos es
    interesante gestionar como finalizar el objeto.


    Pablo Braulio escribió:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    hola,

    por ejemplo en una clase que te maneja la conexión a una base de datos
    transaccional, le mandás la consulta del COMMIT en el __destruct y te asegurás
    que previamente ingresaron todas las consultas.
    Esto es interesante, pues nunca me he encontrado con la necesidad de
    usar un destructor. Puede que sea por ignorancia.

    ¿Podrías poner un ejemplo de esto que dices?.
    - --
    Saludos cordiales.
    Pablo.

  • Gustavo Pardo at Sep 17, 2008 at 7:47 pm
    El Wed, 17 Sep 2008 11:03:53 +0200
    Pablo Braulio <brulics@gmail.com> escribió:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1
    hola,

    por ejemplo en una clase que te maneja la conexión a una base de datos
    transaccional, le mandás la consulta del COMMIT en el __destruct y te
    asegurás que previamente ingresaron todas las consultas.
    Esto es interesante, pues nunca me he encontrado con la necesidad de
    usar un destructor. Puede que sea por ignorancia.

    ¿Podrías poner un ejemplo de esto que dices?.
    - --
    Saludos cordiales.
    Pablo.
    1. Comienzas tu aplicación. Instancias el objeto de conexión a la bbdd
    (digamos que se llama $oMySQL) que entre otras cosas, al crear la instancia
    envía al motor la sentencia "START TRANSACTION".

    2. Tu aplicación hace lo que le ordenas, entre otras cosas, envías consultas al
    motor de bbdd (una o mil, es lo mismo).

    3. Cuando el objeto $oMySQL finaliza, le pones en el método __destruct una
    consulta "COMMIT" cerrará la transacción, sin necesidad de hacerlo "a mano" en
    algún lugar de tu aplicación. Si además, en todas tus aplicaciones siempre usas
    esta clase, ya lo tienes listo...

    Se puede mejorar poniendo ese "COMMIT" en una variable de la clase, cosa de que
    si lo necesitas en cualquier momento puedas reemplazar su valor por "ROLLBACK",
    pero eso ya es harina de otro costal :)

    Saludos.
    --
    Gustavo Pardo
    Dataneu Argentina
    Software & Web Hosting
    Mail: gustavo.pardo@dataneu.com
    Web: http://dataneu.com/
    Tel.(+54 299) 489 6880
    Centenario, NQN - Argentina
  • Germana oliveira at Sep 18, 2008 at 1:28 am
    Saludos!!!

    me han gustado mucho sus respuestas y agradezco sus opiniones... ahora, hay un
    pequeño detalle: lo mas probable es que tenga que desarrollar el proyecto
    en mi casa o bien desde una conexion al servidor desde internet, ya que para
    quines voy a trabajar se encuentran en otra ciudad, por esto no se la
    posibilidad que tenga de tener en el servidor el framework de mi
    preferencia.. pregunto: seria posible que simplemente pase al servidor la
    aplicacion ya desarrollada... o obviamente la aplicacion necesitaria de
    componentes del framework.?


    Nota: me ha gustado mucho el Zend y Symfony.... aunque comienzo a inclinarme
    mas por el ultimo.

    Gracias

    --
    Germana Oliveira
    germanaoliveirab_at_gmail_dot_com
    Carabobo, Venezuela
  • Caco Patane at Sep 18, 2008 at 2:04 am

    pequeño detalle: lo mas probable es que tenga que desarrollar el proyecto
    en mi casa o bien desde una conexion al servidor desde internet, ya que para
    quines voy a trabajar se encuentran en otra ciudad, por esto no se la
    posibilidad que tenga de tener en el servidor el framework de mi
    preferencia.. pregunto: seria posible que simplemente pase al servidor la
    aplicacion ya desarrollada... o obviamente la aplicacion necesitaria de
    componentes del framework.?
    Los frameworks no son mas que un conjunto de scrpits, puedes
    desarrollar en tu maquina, luego copiar todo el desarrollo al servidor
    de produccion y todo _deberia_ funcionar. No hace falta que el
    servidor, o la maquina en la que desarrolles tengan instalado ningun
    componente raro (al menos para CodeIgniter o Kohana). Hay frameworks
    que funcionan tanto con PHP4 como PHP5 -esto te da un poco de
    indenpendencia respecto a los requerimientos del servidor en donde
    alojes tu desarrollo-.
    Nota: me ha gustado mucho el Zend y Symfony.... aunque comienzo a inclinarme
    mas por el ultimo.
    A mi me gustaron CodeIgniter y Kohana (este ultimo esta basado en
    CodeIgniter), son simples y rapidos: probalos tambien!

    Si van a ser varias personas las que desarrollen te recomiendo el uso
    de un versionador como Subversion (http://subversion.tigris.org/) o
    GIT (http://git.or.cz/).

    Saludos,
    Caco_Patane <!>
  • Carlos Medina at Sep 17, 2008 at 6:19 am

    germana oliveira schrieb:
    Saludos!!

    alguien porfavor, podria explicarme, como si tuviera 5 años, para que me puede
    servir un metodo _destruct().

    Gracias!!!!
    ^Hola Germana,
    Programacion OOP no se le explica a un nino de 5 anos por lo que te
    remito a Wikipedia.



    http://es.wikipedia.org/wiki/OOP

    Saludos

    Carlos

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedSep 17, '08 at 1:45a
activeSep 18, '08 at 2:04a
posts10
users7
websitephp.net

People

Translate

site design / logo © 2022 Grokbase