Pular para o conteúdo principal

PHP - Construtores e destrutores

Neste post, vamos mostrar como usar construtores e destrutores em scripts PHP para serem executados na linha de comando, incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui).


Construtores em PHP

Construtores são métodos especiais que são chamados automaticamente quando um objeto é criado. Eles geralmente são usados para inicializar as propriedades de um objeto. Por exemplo, a seguinte classe "Pessoa" tem um construtor que inicializa as propriedades "nome" e "idade":

    
class Pessoa {

    public $nome;
    public $idade;

    public function __construct($nome, $idade) {
        $this->nome = $nome;
        $this->idade = $idade;
    }
}
    

Destrutores em PHP

Destrutores são métodos especiais que são chamados automaticamente quando um objeto é destruído. Eles geralmente são usados para liberar recursos alocados pelo objeto, como conexões com banco de dados ou arquivos abertos.

Por exemplo, a seguinte classe "ConexaoBanco" tem um destrutor que fecha uma conexão com o banco de dados:

    
class ConexaoBanco {
    private $conexao;

    public function __construct() {
        $this->conexao = new PDO('mysql:host=localhost;dbname=banco', 'usuario', 'senha');
    }

    public function __destruct() {
        $this->conexao = null;
    }
}
    

Outro exemplo é a seguinte classe "Log" que tem um destrutor que escreve uma mensagem de log no arquivo de log


class Log {

    private $arquivo;

    public function __construct() {
        $this->arquivo = fopen('log.txt', 'a');
    }

    public function escrever($mensagem) {
        fwrite($this->arquivo, $mensagem);
    }

    public function __destruct() {
        fclose($this->arquivo);
    }
}
    

Conclusão

Com construtores e destrutores podemos inicializar nossos objetos e liberar recursos alocados, construtores nos permitem controlar a visibilidade de propriedades e agiliza o uso de objetos assim como destrutores evitam possíveis problemas de vazamento de memória ou recursos não liberados.

Comentários

Mais visitadas

Aplicação Flask usando Nginx e Gunicorn

Aplicação Flask usando Nginx e Gunicorn Se você já desenvolveu uma aplicação Flask básica, sabe que o servidor de desenvolvimento embutido não é ideal para produção. Ele não é projetado para lidar com altos volumes de tráfego ou conexões simultâneas. Para tornar sua aplicação Flask mais robusta e pronta para produção, podemos usar o Gunicorn como servidor de aplicação e o Nginx como proxy reverso. Neste artigo, vamos adaptar o exemplo anterior ( Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker ) para incluir o Nginx e o Gunicorn. O que são Nginx e Gunicorn? Gunicorn O Gunicorn (Green Unicorn) é um servidor de aplicação WSGI que roda aplicações Python como o Flask. Ele é eficiente e simples de configurar, lidando com múltiplas requisições ao mesmo tempo, algo que o servidor embutido do Flask não faz bem. Nginx O Nginx é um servidor web que atua como um proxy reverso. Ele recebe requisições HTTP e as encaminha ao Gunicorn. Além disso, o Nginx pode: Servir arquivos ...

Funções de Data e Hora (Delphi)

É muito comum nos depararmos no dia a dia com a necessidade de manipular datas e horas, seja para um calculo de permanência, dias de atraso enfim, é praticamente escapar de alguma situação que necessite desse tipo de controle. Assim como a necessidade e se utilizar algum recurso para manipular as datas e horas de alguma maneira e freqüente, as duvidas de como o faze-lo também é, basta um breve olhar em qualquer fórum especializado e lá está, alguma duvida relacionada, por isso decidi falar um pouco sobre uma unit muito poderosa chamada DateUtils para a manipulação de data e hora, com um grande numero de métodos e classes que facilitam a vida de qualquer um. Alguns exemplos: CompareDate(constA, B: TDateTime): TValueRelationship; Compara apenas a data de dois valores (do tipo TDateTime) retornando: LessThanValue O primeiro valor é menor que o segundo EqualsValue Os valores são iguais GreaterThanValue O primeiro valor é maior que o segundo CompareDateTime(const A, B: TD...

Listar arquivos existentes em diretório (Delphi)

Mostraremos uma maneira simples e prática para listar o conteúdo de um diretório com a opção de incluir nessa listagem os arquivos de seus subdiretórios. No exemplo abaixo temos um Edit para receber o diretório a ser pesquisado um CheckBox para indicar se os subdiretórios entrarão na pesquisa um botão para efetuar a pesquisa e um Memo para listar os arquivos encontrados, no final um Edit que receberá o cálculo final (em bytes) da soma do tamanho dos arquivos. procedure TForm1.Button1Click(Sender: TObject); begin   tamanhoTotal := 0;   memLista.Lines.Clear;   ListarArquivos(edtDiretorio.Text, chkSub.Checked);   Edit1.Text := IntToStr( tamanhoTotal ); end; procedure TForm1.ListarArquivos(Diretorio: string; Sub:Boolean); var   F: TSearchRec;   Ret: Integer;   TempNome: string; begin   Ret := FindFirst(Diretorio+'\*.*', faAnyFile, F);   try     while Ret = 0 do ...