Eu tenho uma classe de conexão com o banco de dados, que utiliza adodb e tals
Dae eu inventei de colocar o método _destruct nele, para ele fechar a conexão quando terminasse o script.
PHP 5 introduces a destructor concept similar to that of other object-oriented languages, such as C++. The destructor method will be called as soon as all references to a particular object are removed or when the object is explicitly destroyed or in any order in shutdown sequence.
Na minha teoria, não chamaria ele só quando terminasse a execução do script/função?
Ou quando a chamada dele na classe termina?
Pois eu tenho métodos que acessam outros métodos (usando conexão o tempo todo).
Exemplo:
function algumacoisa($arrValores) { $o = new osForm(); //Vários setters de dados vindas de uma consulta SQL, abrindo uma conexao $o->setCliente(clienteClass::getClienteCodigo($o->getCd_cliente())); $o->setUsuarioAtendente(usuarioClass::getUsuarioCodigo($o->getCd_usuario())); $o->setEquipamento(equipamentoClass::getEquipamentoCodigo($o->getCd_equipamento())); $o->setUsuario_abertura(usuarioClass::getUsuarioCodigo($o->getCd_usuario_abertura())); }
Cada chamada de função tá abrindo conexão, e fechando no término de execução dela :S
Pensei agora, será que se eu passar elas para static ele irá chamar o destrutor somente quando termina a execução da função chamada inicialmente?
Definição de static:
Another important feature of variable scoping is the static variable. A static variable exists only in a local function scope, but it does not lose its value when program execution leaves this scope. Consider the following example:
(espero que o PR leia isso... ')
-- EDIT --
Será que é porque eu fico fazendo novas chamadas da classe a cada método que eu vou executando? Pra mim que não, pois a variavel de conexao é estática :S
E bem antes de começar a chamar estas conexões eu já incluo ela no escopo, ou seja, ele não fica requerindo toda hora a classe, só fazendo a chamada >_>'
Alguem já passou por algo parecido?
[]'s
Edição feita por: savior, 24/08/2007, 12:10.