Programação Orientada a Objetos(POO) com PHP
(Parte 1)
Padronização de código PHP Do Jeito Certo
PHP Standard Recommendation.
PSR-1: Basic Coding Standard
PSR-2: Coding Style Guide
Instalando php na linha de comando
Adicionar o PHP na linha de Comando (PATH)
Localizar o arquivo php.exe, copie o caminho; (ex.: C:\xampp\php)
Botão Iniciar > Sistema / Tecla Windows + Pause/Break;
No lado esquerdo escolha De nições avançadas do sistema;
Escolher Variáveis de ambiente;
Em Variáveis de uso para [Usuario] localize PATH, doiscliques/editar, adicione o caminho copiado;
Abra o terminal
Veri que se o php está disponível para comando: php -v
Executando o servidor embutido do php
Digite o seguinte comando no terminal:
php -S localhost:8080
*Disponível na versão +5.4.0
Paradigmas de programaçãoFuncionais
Orientação a Objetos
FuncionalBaseado em funções
<?php $a = "teste"; $arrIdades = array(6,34,18,17,25,36,89,11,46);
$filtro = function($idade){ return $idade >= 18; };
$saida = array_filter($arrIdades, $filtro);
print_r($saida);
echo $a;
Orientação a objetosImplementa um conjunto de classes que de nem os objetospresentes no sistema de software. (Wikipédia)
A grande vantagem é o reaproveitamento de código no sistema eoutros.
ClasseÉ o molde de algo concreto. Representa um conjunto de objetos comcaracterísticas a ns
<?phpclass Pessoa{ var $dataNascimento; var $nome; public function imprimeDados(){ echo "Data de Nascimento: ". $this->dataNascimento; echo "Nome: ". $this->nome; } public function showNome($nome){ return $this->nome; }}
$pessoa1 = new Pessoa();$pessoa1->dataNascimento = "26/04/1985";$pessoa1->nome = "Junior Messias";
$pessoa2 = new Produto();$pessoa2->dataNascimento = "29/09/1989";$pessoa2->nome = "Fabiana Toniolli Messias";
$pessoa1->imprimeDados();$pessoa2->imprimeDados();
Arquivo para teste<?php
require_once("Classe.php");
Padrão para Orientação a ObjetosUm arquivo para uma classe;
Sempre singular.
Objeto: instância de uma classe.
<?php
class Conta{
}
$contaFulano = new Conta;$contaCiclano = new Conta;
Atributo: são características de um objeto (variáveis).
<?php
class Conta{ public $banco; public $agencia; public $codigo;}
$contaFulano->banco = "Banco do Brasil";$contaFulano->agencia = "599-1";$contaFulano->codigo = "14114-4";
Método: de nem as habilidades/ações dos objetos (funções).
<?php
class Conta{ ... public function getCodigo(){ return $this->codigo; }}
...$contaFulano->getCodigo();
$this-> refere-se ao método/atributo do objeto (instância) atual
Assinatura: é composta pela quantidade de parâmetros.
<?php
class Conta{ ... public function setNome($nome = "Ciclano"){ $this->nome = $nome; return $this; }}
...$contaFulano->setNome("Alfredo");$contaFulano->setNome();
Herança: uma classe pode estender outra classe, aproveitando seusmétodos e atributos possíveis.
<?php
class Conta{ ...}
<?php
class ContaCorrente extends Conta{ ...}
Construtor: são executados quando um objeto é criado.
<?php
class Conta{ public function __construct(){ echo "Nova Conta criada"; }}
<?php
class ContaCorrente extends Conta{ public function __construct(){ echo "Nova Conta Corrente criada"; }}
Calling parent: chamar métodos ou atributos da classe pai.
<?php
class Conta{ public function __construct(){ echo "Nova Conta criada"; }}
<?php
class ContaCorrente extends Conta{ public function __construct(){ parent::__construct(); echo "Nova Conta Corrente criada"; }}
Modi cadores de acesso: Public, Protected e Private.
public: visibilidade total, pode ser redeclarada (padrão);
protected: acesso na própria classe e lhas.
private: acesso somente dentro da mesma classe, não pode serredeclarada;
Abstract: em classes é um template de classes, molde.
<?php
abstract class Conta{ public function __construct(){ echo "Nova Conta criada"; }}
Classes abstratas não podem ser instanciadas.
Abstract: em método não possuem corpo.
<?php
class Conta{ abstract public function getSaldo();}
<?php
class ContaCorrente extends Conta{ public function getSaldo(){ return $this->saldo; }}
Obriga as demais classes a implementar este método
Interface: é um contrato entre a classe e o mundo externo.
<?php
interface ContaInterface{ abstract public function getSaldo();}
<?php
class Conta implements ContaInterface{ abstract public function getSaldo();}
Sempre programe pra interface
That's all folks! Marp (https://yhatt.github.io/marp/)