Pular para o conteúdo principal

PHP - Encapsulamento e modificadores de acesso

Neste post, vamos mostrar como usar encapsulamento e modificadores de acesso em PHP, incluindo exemplos práticos (você pode ver o que já publicamos sobre o PHP aqui).


Encapsulamento em PHP

Encapsulamento é a prática de esconder o estado e comportamento interno de um objeto do mundo externo e fornecer uma interface pública para interagir com o objeto. Isso pode ser alcançado usando modificadores de acesso, como "public", "private" e "protected". Por exemplo, a seguinte classe "ContaBancaria" encapsula a propriedade "saldo":

    
        class ContaBancaria {

            private $saldo;
        
            public function __construct($saldoInicial) {
        
                $this->saldo = $saldoInicial;
            }
        
            public function depositar($valor) {
        
                $this->saldo += $valor;
            }
        
            public function sacar($valor) {
        
                if ($this->saldo >= $valor) {
        
                    $this->saldo -= $valor;
                    return true;
                }
                return false;
            }
        
            public function verSaldo() {
        
                return $this->saldo;
            }
        }        
    


Modificadores de acesso em PHP

Os modificadores de acesso "public", "private" e "protected" são usados para controlar o acesso às propriedades e métodos de uma classe como visto anteriormten, sendo "public" para permitir que as propriedades e métodos sejam acessados de qualquer lugar, "private" para permitir que as propriedades e métodos sejam acessados apenas dentro da própria classe e "protected" para permitir que as propriedades e métodos sejam acessados apenas dentro da própria classe e suas classes derivadas.

A classe "ContaBancaria" vista anteriormente usa o modificador de acesso "private" para controlar o acesso à propriedade "saldo", o que significa que ela só pode ser acessada dentro da própria classe, enquanto os métodos "depositar", "sacar" e "verSaldo" são públicos e podem ser acessados de qualquer lugar, garantindo que o saldo só será alterado a partir dos métodos com essa finalidade (depositar/sacar) e caso seja necessário ver seu conteúdo devemos usar "verSaldo".


Conclusão

Com esses recursos, é possível controlar a segurança e acessibilidade dos atributos e métodos de uma classe, garantindo a integridade dos dados e evitando possíveis erros de programação.

Comentários

Mais visitadas

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...

Centralizar Texto em Edit

Como todos sabemos o Edit mantém todo texto digitado a esquerda, o que não fica bem quando o usamos para a entrada de números, pois bem, o exemplo abaixo apresenta uma alternativa para centralizar um determinado valor dentro de um Edit: procedure EditChange(Sender: TObject); var vl_label : TLabel; //variável do tipo Label begin vl_label := TLabel.Create(self); //criamos um label WITH vl_label DO BEGIN Font.Name := TEdit(sender).Font.Name; //pegamos a fonte usada no edit Caption := TEdit(sender).Text; //pegamos o conteúdo do edit SendMessage(TEdit(sender).Handle, EM_SETMARGINS, EC_LEFTMARGIN, (TEdit(sender).Width-vl_label.Width) div 2); //centraliza no label e retorna para o edit END ; vl_label.Free; end ;

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...