Mas de qualquer forma vamos escrever mesmo, chegamos a nossa última aula de Orientação a Objeto. Muitos vão dizer, mas falta muita coisa ainda!!!, eu sei mas se eu fosse falar tudo sobre PHP nós levariamos 10 anos para terminar o curso rsss.
Mas o importante aqui e termos noção de como as coisas funcionam no PHP, e após essa aula nós vamos começar a criar scripts, com isso vamos ver como aplicar o que aprendemos de uma forma prática! (bom né?)
Ok hoje vamos falar sobre Operador de resolução de escopo.
Mas antesss...O PHP5 agora nós permite acessar constantes e métodos estáticos através de um operador de definição de escopo (que nomezinho hein rsss) para piorar o nome dele é ainda mais feio Paamayim Nekudotayim huhuhu TENSO, sendo ele :: (dois pontos)
Tá mas pra que serve essa coisa? Vamos exemplificar:
<?php
class Php5Operador
{
const FRASE = "Essa é nossa frase padrão";
}
echo Php5Operador::FRASE;
?>
Ou sejaaa, nós podemos chamar sem ter que instanciar uma classe. Ok entendido nosso operador de escopo certo?
Vamos lá, para agilizar, vamos aprender tudo de uma vez rsss
Primeiramente vamos definir o que é cada coisa:
self:: - quando se trata da classe, atributos estaticos.
$this é um 'ponteiro' que 'aponta' para o proprio objeto.
parent:: - Onde podemos acessar métodos de outras classes extendidas
extends - herda métodos da classe pai
<?php
class Clientes
{
//declarando as variáveis
private $nome;
//metodo construtor que vai receber as informações dos clientes
function __construct($nome)
{
$this->nome = $nome;
}
//metodo reponsável por retornar o nome
function getNome()
{
return $this->nome;
}
//metodo reponsável por atribuir o nome
function setNome($nome)
{
$this->nome = $nome;
}
}
$cli = new Clientes('Kin');
$cli2 = new Clientes('Fernando');
echo $cli->getNome();
echo '<br />';
echo $cli2->getNome();
//Ok temos nossos clientes porém existem pessoas juridca e física
//como ainda estamos trabalhando com Cliente então vamos extender
//a classe clientes ao tipo de pessoa, podendo assim acessar metodo da classe pai
//que é clientes
//Agora ao instanciar a classe Juridica podemos herdar os métodos da classe Cliente
class Juridica extends Clientes
{
private $cnpj;
function __construct($nome,$cnpj)
{
//vamos usar o parent para acessar os métodos da nossa classe pai CLIENTES
parent::__construct($nome);
$this->cnpj = $cnpj;
}
//metodo reponsável por retornar o cnpj
function getCnpj()
{
return $this->cnpj;
}
//metodo reponsável por atribuir o cnpj
function setCnpj($cnpj)
{
$this->cnpj = $cnpj;
}
}
echo '<br />';
echo '--------------';
echo '<br />';
$cliJuridica = new Juridica('Kin','012401.65484.12357-11');
//método herdado da classe Clientes
echo $cliJuridica->getNome();
echo '<br />';
echo $cliJuridica->getCnpj();
?>
Entendido o Extends e o Parent, vamos entender o Self, nada melhor do que um exemplo prático que diz por sí só pra qu serve.
<?php
class Paginas
{
private $pagina;
function __construct($p=NULL)
{
switch ($p) {
case 'contato':
self::contato();
break;
default:
self::contato();
break;
}
}
function home()
{
echo 'Bem Vindo nossa página!';
}
function contato()
{
echo 'Bem Vindo a nossa página de contato!';
}
}
//se eu não passar parametro carrega a página home
$carrega_pag = new Paginas();
//se eu passar carrega a pagina que eu solicitar
//ex: phparte.blogspot.com/index.php?pag=contato
$carrega_pag = new Paginas($_GET['pag']);
?>
Bem galera sei que não ficou NOSSA QUE AULA DOIDA!!! mas enfim, como eu já disse anteriormente estou sem emprego pois acabei de me mudar e o fernando terminando trabalho de conclusão de curso da Faculdade, então estamos super atarefados, estou fazendo milhões de biquinhos.
Qualquer dúvida posta ai que a gente explica na medida do possível.
Iremos agora começar a criar alguns scripts aplicando tudo que vimos, algo como mural, blog, formulário de cadastro, autenticação e coisas do dia a dia.
Se possível deixe um cafezinho para a gente!