Você está aqui: PHP ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação Orientada a Objetos em PHP - Como criar e usar métodos estáticos em PHP

Quantidade de visualizações: 8142 vezes
Como já vimos em outras dicas desta seção, uma classe possui propriedades (variáveis) e métodos. Veja a seguinte declaração de uma classe Produto:

<?php
  // classe Produto com duas variáveis privadas e seus
  // correspondentes métodos mutatórios e acessórios
  class Produto{
    private $nome;
    private $preco;

    public function setNome($nome){
      $this->nome = $nome;
    }

    public function getNome(){
      return $this->nome;
    }

    public function setPreco($preco){
      $this->preco = $preco;
    }

    public function getPreco(){
      return $this->preco;
    }
  }
?>

Aqui cada instância da classe Produto terá suas próprias variáveis $nome e $preco e os métodos que permitem acesso e alteração destas variáveis também estão disponíveis a cada instância.

Há, porém, situações nas quais gostaríamos que um determinado método estivesse atrelado à classe e não à cada instância individual. Desta forma, é possível chamar um método de uma classe sem a necessidade da criação de instâncias da mesma.

Métodos estáticos em PHP podem ser criados por meio do uso da palavra-chave static. É comum tais métodos serem declarados com o modificador public, o que os torna acessíveis fora da classe na qual estes foram declarados. Veja um exemplo:

<?php
  // classe Pessoa com duas variáveis privadas e um método
  // estático
  class Pessoa{
    private $nome;
    private $idade;
    
    // um método estático que permite verificar a validade
    // de um número de CPF
    public static function isCPFValido($cpf){
      // alguma rotina aqui
      return true;
    }
  }

  // vamos efetuar uma chamada ao método isCPFValido() sem
  // criar uma instância da classe Pessoa
  if(Pessoa::isCPFValido("12345")){
    echo "CPF Válido";
  }
  else{
    echo "CPF inVálido";
  }
?>

Observe como acessamos o método isCPFValido() sem a necessidade da criação de uma instância da classe Pessoa. Note que, se quisermos chamar um método estático a partir de uma instância na qual ele está declarado, devemos usar self em vez de $this (ainda que esta última forma não provoque nenhum efeito colateral) para deixar bem claro que o método chamado pertence à classe e não às suas instâncias.

Finalmente note que um método estático não possui acesso à uma instância específica de uma classe por meio da referência $this (o que é compreensível, visto que uma chamada a um método estático não depende da existência de instâncias da classe que o declara). Ao tentarmos acessá-lo, teremos a seguinte mensagem de erro:

Fatal error: Using $this when not in object context in ...


PHP ::: Dicas & Truques ::: Data e Hora

Datas e horas em PHP - Como subtrair horas de uma data usando a função mktime() da linguagem PHP

Quantidade de visualizações: 11106 vezes
Nesta dica veremos como é possível subtrair horas de uma data. Para isso nós usaremos a função mktime() da linguagem PHP, com as horas subtraídas da parte date("H") da nova data e hora.

Veja o código PHP completo para o exemplo:

<html>
<head>
<title>Estudando PHP</title>
</head>
<body>
 
<?php
  echo "Agora é: " . date("d/m/Y - H:i:s") . "<br>";
  $data_anterior = mktime(date("H") - 15, date("i"), 
    date("s"), date("m"), date("d"), date("Y"));
  echo "15 horas atrás era: " . 
    date("d/m/Y - H:i:s", $data_anterior);
?>
  
</body>
</html>

Ao executar este código PHP nós teremos o seguinte resultado:

Agora é: 21/04/2020 - 22:53:06
15 horas atrás era: 21/04/2020 - 07:53:06


PHP ::: Boletos Bancários, Arquivos de Remessa e Retornos do Banco ::: Caixa Econômica Federal - Banco 104

Boleto Bancário PHP - Como calcular o dígito verificador da conta corrente - Módulo 11 - Boleto Caixa Econômica CNAB240

Quantidade de visualizações: 374 vezes
Nesta dica mostrarei, passo-a-passo, como calcular o dígito verificador da conta corrente para o boleto e arquivos de remessa da Caixa Econômica Federal (Banco 104) de acordo com o Manual de Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária Caixa - SIGCB - Versão 67.118 v024 micro. Tenha certeza de verificar sua versão do manual antes de usar o código abaixo.

O Dígito Verificador da Conta é um código adotado pelo banco, em nosso caso a Caixa Econômica, para verificação da autenticidade do número da conta corrente, e tal número deverá ser calculado através do módulo 11.

Mostro abaixo o código completo para o cálculo do dígito verificador. Note que só precisamos informar o número da conta (sem o dígito) e o código se encarrega de calcular o dígito. Aqui eu informei o número da conta em uma variável, mas você pode modificar o código para que o valor venha de um formulário ou do banco de dados.

Eis o código PHP:

<?php
// função que recebe o número da conta e devolve
// o dígito verificador
function digitoVerificadorConta($conta){
  // primeiro vamos remover os espaços do número da conta
  $conta = trim($conta);
  // agora precisamos adicionar os zeros necessários
  // para completar 12 posições
  $conta = sprintf("%012d", $conta);
  // agora vamos definir os índices de múltiplicação
  $indices = "543298765432";
  // e aqui a soma da multiplicação coluna por coluna
  $soma = 0;
	
  // fazemos a multiplicação coluna por coluna agora
  for($i = 0; $i < strlen($conta); $i++){
   $soma = $soma + ((int)($conta[$i])) * 
     ((int)($indices[$i]));	
  }
	
  // obtemos o resto da divisão da soma por onze
  $resto = $soma % 11;
	
  // subtraímos onze pelo resto da divisão
  $digito = 11 - $resto;
	
  // atenção: Se o resultado da subtração for
  // maior que 9 (nove), o dígito será 0 (zero)
  if($digito > 9){
    $digito = 0;	
  }
	
  return $digito;  
}
  
// vamos obter o dígito verificador para a conta a seguir
$conta = "109990";
$digito = digitoVerificadorConta($conta);
echo "O dígito verificador para a conta " . $conta .
  " é: " . $digito;
?>

Ao executar este código PHP nós teremos o seguinte resultado:

O dígito verificador para a conta 109990 é: 6

É importante observar que o dígito verificador da agência e também do par agência/conta são sempre informados pela Caixa, geralmente pela agência na qual nossos clientes possuem conta.


PHP ::: Dicas & Truques ::: Strings e Caracteres

Como remover os espaços em excesso de uma string e deixar apenas um espaço entre as palavras usando a função preg_replace() e expressões regulares do PHP

Quantidade de visualizações: 9055 vezes
Nesta dica mostrarei como é possível tirar proveito da função preg_replace() da linguagem PHP para retirar os espaços em excesso de uma frase ou texto. Note o uso da função trim() para remover também os espaços antes e depois da frase ou texto.

Veja o código completo para o exemplo:

<?php
  // uma frase com excesso de espaços 
  // vamos deixar apenas um espaço entre as palavras
  $frase = "   Gosto muito de   programar em    PHP  ";
  $frase2 = trim(preg_replace('/\s\s+/',' ', $frase));
  echo "Com espaços: " . $frase . "<br>";
  echo "Sem espaços: " . $frase2; 
?>

Ao executar este código PHP nós teremos o seguinte resultado:

Com espaços:  Gosto muito de   programar em  PHP
Sem espaços: Gosto muito de programar em PHP


Pode ser necessário você olhar no código fonte da página HTML para visualizar melhor o resultado.


PHP ::: Dicas & Truques ::: Data e Hora

PHP para iniciantes - Como obter a diferença em horas entre duas datas (e suas respectivas horas)

Quantidade de visualizações: 12436 vezes
Nesta dica eu mostro como podemos usar as funções mktime() e gmdate() da linguagem PHP para obter e retornar a diferença em horas entre duas datas, e suas horas, é claro. Note que vamos fornecer duas datas diferentes (e suas horas) e vamos obter a diferença entre elas em segundos.

Veja o código completo:

<head>
<title>Estudando PHP</title>
</head>
<body>

<?php
  // data e hora inicial = 23/11/2006 - 13:23:15
  $data_inicial = mktime(13, 23, 15, 11, 23, 2006);
  // data e hora final = 23/11/2006 - 10:23:15
  $data_final = mktime(22, 23, 15, 11, 23, 2006);
  $segundos = $data_final - $data_inicial;
  echo "A diferença em horas entre as duas 
    datas é: " . gmdate("H:i:s", $segundos);
?>
 
</body>
</html>

Ao executar este código nós teremos o seguinte resultado:

A diferença em horas entre as duas datas é: 09:00:00


PHP ::: Dicas & Truques ::: Data e Hora

Datas e horas em PHP - Como adicionar horas a uma data usando a função mktime() do PHP

Quantidade de visualizações: 17159 vezes
Nesta dica veremos como é possivel usar a função mktime() da linguagem PHP para adicionarmos uma determinada quantidade de horas a uma data. Veja que obtemos a data e hora atual, acrescentamos 15 horas e então exibimos a nova data e hora.

Veja o código completo para o exemplo:

<html>
<head>
<title>Estudando PHP</title>
</head>
<body>

<?php
  echo "Agora é: " . date("d/m/Y - H:i:s") . "<br>";
  $proxima_data = mktime(date("H") + 15, date("i"), 
    date("s"), date("m"), date("d"), date("Y"));
  echo "Daqui a 15 horas será: " . 
    date("d/m/Y - H:i:s", $proxima_data);
?>
 
</body>
</html>

Ao executar este código PHP nós teremos o seguinte resultado:

Agora é: 28/03/2021 - 17:08:44
Daqui a 15 horas será: 29/03/2021 - 08:08:44


Veja mais Dicas e truques de PHP

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Elétrica pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 15 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: C#
3º lugar: PHP
4º lugar: Delphi
5º lugar: Python
6º lugar: JavaScript
7º lugar: C
8º lugar: C++
9º lugar: VB.NET
10º lugar: JSP (Java Server Pages)



© 2021 Arquivo de Códigos - Todos os direitos reservados | Versión en Español | Versão em Português