-2

Simulando Destrutores no PHP

criado por Wellington Costa de Almeida em 30/01/2003 11:13pm
Para continuar com o estilo usado nas aulas que dou para os alunos da techos e plusmaster informática, vou ser o mais direto possivel nesse artigo.

O modo que existe no PHP para simular destrutores em classes é o uso da função register_shutdown_function(). A mesma basicamente registra uma função callback que deve ser chamada quando o pedido para o script atual terminou.

<?php
$CLASSNAME_OBJECT_LIST = array();

function classname_destructor()
{
    global $CLASSNAME_OBJECT_LIST;

    if (count($CLASSNAME_OBJECT_LIST)) {
        reset($CLASSNAME_OBJECT_LIST);
        while (list(, $obj) = each($CLASSNAME_OBJECT_LIST)) {
            $obj->destroy();
        }
        $CLASSNAME_OBJECT_LIST = null;
    }
}

class Tree
{
    var $type;

    function Tree($type='oak')
    {
        $this->type = $type;
        global $CLASSNAME_OBJECT_LIST;
        array_push($CLASSNAME_OBJECT_LIST, &$this);
    }

    function destroy()
    {
        $this->type = null;
    }
}
register_shutdown_function("classname_destructor");
?>

No exemplo acima, registramos uma função de desligamento com a função register_shutdown_function(). A função será chamada quando seu script terminar de executar. Essa função chamará o método destrutor (destroy() neste casso, mas poderia ser qualquer outro método que vc escolhesse) em cada objeto na variável global $CLASSNAME_OBJECT_LIST. Cada objeto é adicionado à lista de objetos no construtor da classe adicionando uma referência à variável especial $this para o array.

Espero que esse artigo possa ajudar!

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)