Pular para o conteúdo principal

PHP - Classes e objetos

Seguindo nosso aprendizado sobre PHP hoje veremos um pouco sobre classes e objetos. Neste post, vamos mostrar como usar classes e objetos no PHP incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui).


Classes e objetos foram introduzidos no PHP a partir da versão 4, lançada em 2000, sendo isso um dos principais motivos para sua popularidade crescente como linguagem de programação para desenvolvimento web. Antes disso, o PHP era principalmente utilizado como linguagem de script para a criação de páginas dinâmicas.


Classes em PHP

Uma classe é um modelo para a criação de objetos. Ela define as propriedades (estado) e métodos (comportamento) dos objetos criados a partir dela. Por exemplo, a seguinte classe "Pessoa" define as propriedades "nome" e "idade" e o método "imprimirDados":

    
        class Pessoa {
                public $nome;
                public $idade;
                public function imprimirDados() {
                    echo "Nome: " . $this->nome . "\n";
                    echo "Idade: " . $this->idade . "\n";
                }
            }
    

Objetos em PHP

Os objetos são instâncias das classes. Eles possuem seus próprios valores para as propriedades e podem acessar os métodos da classe. Por exemplo, o seguinte código cria um objeto "pessoa1" a partir da classe "Pessoa" e preenche as propriedades "nome" e "idade" antes de chamar o método "imprimirDados":

    
        $pessoa1 = new Pessoa();
        $pessoa1->nome = "João";
        $pessoa1->idade = 30;
        $pessoa1->imprimirDados();
    

Outro exemplo seria criar uma classe automovel com atributos marca, modelo, ano de fabricação e cor, com metodos para acelerar e frear o carro.

    
        class Automovel {
            public $marca;
            public $modelo;
            public $ano;
            public $cor;
        
            public function __construct($marca, $modelo, $ano, $cor) {
                $this->marca = $marca;
                $this->modelo = $modelo;
                $this->ano = $ano;
                $this->cor = $cor;
            }
        
            public function acelerar() {
                echo "Acelerando...\n";
            }
        
            public function frear() {
                echo "Freando...\n";
            }
        }
        
        // Cria um novo objeto da classe Automovel
        $meuCarro = new Automovel("Ford", "Mustang", 2019, "Vermelho");
        
        // Exibe as informações do carro
        echo "Meu carro é um {$meuCarro->ano} {$meuCarro->marca} {$meuCarro->modelo} na cor {$meuCarro->cor}\n";
        
        // Acelera o carro
        $meuCarro->acelerar();
        
        // Freia o carro
        $meuCarro->frear();
        
    

Conclusão

Podemos concluir que a grande vantagem de trabalhar com classes e objetos em PHP é que elas permitem a organização e a reutilização do código. As classes fornecem uma estrutura para criar objetos que possuem propriedades e comportamentos específicos. Isso nos permite modelar os dados e lógica de negócios de maneira mais clara e organizada, tornando o código mais fácil de entender e manter. Além disso, as classes podem ser herdadas e reutilizadas em outras partes do código, o que ajuda a evitar a duplicação de código e acelerar o desenvolvimento.

Comentários

Mais visitadas

Iniciar e Parar Serviços do Windows (Delphi)

Em certas ocasiões nos deparamos com a necessidade de manipular determinadas atividades do SO, como iniciar ou parar um banco de dados, ou qualquer outro serviço que esteja funcionando no momento. Segue abaixo um código que encontrei na Internet para tal finalidade (não me recordo à fonte, assim que eu a encontrar colocarei). Iniciar Serviço: uses WinSvc; // // start service // // return TRUE if successful // // sMachine: //   machine name, ie: \SERVER //   empty = local machine // // sService //   service name, ie: Alerter // function ServiceStart(   sMachine,   sService : string ) : boolean; var   //   // service control   // manager handle   schm,   //   // service handle   schs   : SC_Handle;   //   // service status   ss     : TServiceStatus;   //   // te...

Alterar cores do PageControl (Delphi)

O padrão Windows todo cinza não é muito atraente, por isso quando nos utilizarmos do PageControl podemos alterar suas cores e fontes da seguinte maneira: Em primeiro lugar devemos alterar a propriedade OwnerDraw para TRUE ; Depois implementar seu método DrawTab da seguinte maneira: //pinta a fonte Control.Canvas.Font.Color:=clBlack; // // pinta a paleta / aba Control.Canvas.brush.Color:=clSkyBlue; PageControl1.Canvas.Rectangle(Rect); Control.Canvas.TextOut(Rect.left+5,Rect.top+3,PageControl1.Pages[tabindex].Caption); // pinta a parte interna (tabsheet) PageControl1.Pages[TabIndex].brush.Color := Control.Canvas.brush.Color; PageControl1.Pages[TabIndex].Repaint; Caso a intenção seja manter cada aba com seu próprio estilo basta adicionar um CASE filtrando o índice das abas: case TabIndex of   0: Control.Canvas.Font.Color:=clBlack;   1: Control.Canvas.Font.Color:=clWindow; ...

Manipular arquivos com PL/SQL (Oracle)

O bom e velho arquivo, é impressionante como lidamos com seus vários tipos durante todos os dias, bom hoje vamos mostrar um jeito simples de se escrever e ler arquivos apenas com a codificação nativa do Oracle. A primeira coisa a fazer é criar um diretório válido configurado no Oracle, e permissões de acesso a esse diretório para o usuário de banco onde faremos o exemplo, sendo assim suponhamos que nosso usuário de banco se chame programero, e nosso diretório real esteja em c:\programero, então logado como SYSTEM devemos executar os seguintes comandos: 1: -- cria diretorio 2: create or replace directory DIR_PROGRAMERO as ' C:\PROGRAMERO '; 3: -- concede permissão de escrita e leitura para nosso usuário 4: grant read , write on directory DIR_PROGRAMERO to PROGRAMERO; Para escrever, basicamente precisamos apenas saber onde esse arquivo ficará, no nosso caso no diretório criado acima, segue o código de escrita: 1: declare 2: -- nosso handler 3: v_a...