Sei sulla pagina 1di 26

Classe é um modelo composto por métodos e parâmetros (variáveis) para tratar dados no escopo do

programa.
O Objeto nada mais é do que a instância de uma classe. Objeto é atribuído a uma variável.
Esta variável, portanto, será a referência/instância desta classe. Veja o exemplo de uma classe e sua
instância abaixo:
<?php
// Isto é uma classe
class Foo
{
// Isto é um método dentro da classe Foo
function bar()
{
echo 'Olá, mundo!';
}
}
// Isto é um objeto
$var = new Foo(); // Instância da classe Foo, ou seja, criando um objeto
$var->bar(); // chamando o método "bar" do objeto $var

?>
• Para definir uma classe, obrigatoriamente usa-se a palavra reservada
class. A partir do PHP 5, houve uma evolução ao se trabalhar com
Orientação a Objetos, pois os métodos e atributos dentro dessas
classes agora possuem uma definição de visibilidade, possibilitando
criar restrições de acesso.
• Para acessar os métodos e atributos dentro de uma classe, devemos
usar a pseudo variável $this, que traduzindo significa "este" (métodos
e atributos dentro da classe), por exemplo:
Para criar uma classe em PHP, simplesmente digite a palavra class, dê um espaço e digite o nome
da sua classe. As ações da sua classe devem vir entre chaves.

<?php
class NomeDaClasse
{

}
?>

Recomenda-se que você inicie nomes de classes com letra maiúscula, e evite o caractere _ (underscore).
Ou seja, escreva NomeDaClasse ao invés de nome_da_classe.
Também é recomendado que o nome da sua classe seja descritivo, ou seja, especifique o que a classe faz.
Objetos (instância da classe)

Para criar um objeto (que vai realizar as ações), utilize a palavra new e o nome da classe.
class NomeDaClasse
{

}
// Instância da classe (Objeto)
$objeto = new NomeDaClasse; ?>

Até aqui, não fizemos nada, apenas criamos a classe e um objeto, porém, se nossa classe não tem propriedades
nem métodos, nosso objeto também não terá.
Para entender melhor, vamos ver o que são propriedades e métodos.
Propriedades de uma classe
• Uma propriedade da classe é como uma variável comum, possui um valor mas não realiza nenhuma ação:

• <?php
• class NomeDaClasse
• {
• // Propriedades da classe
• public $propriedade = 'Valor';
• }

• // Instância da classe (Objeto)


• $objeto = new NomeDaClasse;

• // Acessando uma propriedade da classe


• echo $objeto->propriedade;
• ?>

Para acessar uma propriedade ou método de uma classe, é necessário que você acesse o objeto seguido de um traço (-) e um sinal de maior que (>), ou seja: ->.
Métodos de uma classe
• Os métodos de uma classe realizam ações, ou seja, são funções que fazem algo que você queira. Veja outro exemplo:
• <?php
• class NomeDaClasse
• {
• // Propriedades da classe
• public $propriedade = 'Valor';

• // Método da classe
• public function escreve () {
• echo $this->propriedade;
• }
• }

• // Instância da classe (Objeto)


• $objeto = new NomeDaClasse;

• // Acessando um método da classe


• echo $objeto->escreve();
• ?>
Métodos de uma classe
• Estrutura básica de uma função


• function nome_funcao($par1, $par2, $par3...$parN)
• {
• //instruções
• }

• Algumas considerações sobre o código acima:

• A palavra reservada function é imutável e obrigatória, é ela que define o bloco de código como uma função.
• O “nome_funcao” deve ser um valor significativo, pelo qual os comandos sejam facilmente identificados. Assim como as
variáveis, não pode ser iniciado com números ou caracteres especiais, exceto o underline (_). Geralmente inicia-se o nome da
função com letra minúscula, mas esta não é uma convenção, cabe a cada um decidir que notação utilizar.
• Os valores entre parênteses são chamados de parâmetros ou argumentos e são valores dos quais a função depende para ser
executada corretamente. Nem sempre os argumentos são necessários, então pode-se omiti-los na definição da função, mantendo
apenas os parênteses.
Métodos de uma classe
• As funções podem ser classificadas quanto ao seu retorno como
vazias (void) ou com retorno. As funções void ou sem retorno apenas
executam uma série de comandos sem a obrigação de devolver um
valor específico como resultado. Já as funções com retorno, ao serem
executadas, resultam diretamente em um dado valor que, no PHP,
não tem tipo definido.

Métodos de uma classe
• Listagem 2: Função sem parâmetro e sem retorno • 1

• 1 • 2

• 2 • 3

• 3 • 4

• 4 • 5

• 5 • 6

• • 7

• function exibir_mensagem() • 8

• { • 9

• echo "Olá\n"; • 10

• echo "Seja Bem Vindo(a)!" • 11

• } •

• <?php

• Listagem 3: Função com parâmetro e sem retorno • //definição da função

• 1 • function exibir_mensagem($nome)

• 2 • {

• 3 • echo "Olá\n";

• 4 • echo $nome;

• 5 • }

• •

• function exibir_mensagem($nome) • //chamando a função

• { • exibir_mensagem("Joel Rodrigues");

• echo "Olá\n"; • ?>

• echo $nome

• } • A chamada à função sem parâmetro é ainda mais simples, bastaria não informar nenhum valor entre parênteses.

• Listagem 4: Invocando uma função sem retorno


Métodos de uma classe
• 5: Função sem parâmetro e com retorno • break;
• case 4:
• • return "Quinta";
• <?php • break;
• //definição da função • case 5:
• function dia_atual() • return "Sexta";
• { • break;
• $hoje = getdate(); • case 6:
• switch($hoje["wday"]) • return "Sábado";
• { • break;
• case 0: • }
• return "Domingo"; • }
• break; • //chamada à fução
• case 1: • $dia = dia_atual();
• return "Segunda"; • echo $dia;
• break; • ?>
• case 2:
• return "Terça"; • A função “dia_atual” verifica o dia da semana e de acordo com seu valor (inteiro entre
0 e 6), retorna o nome dia em português. A palavra reservada return é utilizada para
• break; definir o resultado da função e sinaliza também o fim da execução desta. Qualquer
código que venha a ser posto após o return (o que não deve ocorrer) será
• case 3: desconsiderado.
• return "Quarta";
Métodos de uma classe
• 6: Função com parâmetro e com • $resultado = somar(1,2);
retorno • echo $resultado;
• • ?>
• <?php • Como vimos, o resultado das
• //definição da função funções pode ser utilizado
• function somar($numA, facilmente atribuindo-se seu valor
$numB) a uma variável. Pode-se ainda
utilizar o retorno diretamente,
• { por exemplo, como argumento de
• return $numA + $numB; outra função como
• } somar(somar(1,2), somar(3,4)).

Métodos de uma classe
• 6: Função com variável local acessar a variável $resto
• ?>
• • A função “par_ou_impar” usa uma
• <?php variável local “$resto” para armazenar
o resto da divisão do número recebido
• function par_ou_impar($num) como parâmetro por dois. Se o resto da
• { divisão for igual a zero, isso indica que o
número é par, caso contrário, é impar.
• $resto = $num % 2; • As variáveis globais, por sua vez, podem
• if($resto == 0) ser acessadas a partir de qualquer
• return "PAR"; ponto do código e são usadas para
armazenar informações que precisam
• else ser utilizadas por várias funções
• return "IMPAR"; distintas ou acessadas diretamente.
• }
• //fora da função não é possível
Public, protected e private

• As palavras-chave public, protected e private indicam a visibilidade dos métodos ou


propriedades. Antes de criar um método ou propriedade, é necessário indicar a
visibilidade.
• Propriedades e métodos podem ser:
• public – Indica que a propriedade ou método estará disponível em qualquer local, ou
seja, diretamente na classe, em classes descendentes, ou diretamente pelo programa.
• private – Indica que a propriedade ou método somente estará disponível dentro da
classe em que foi criado. Não estará acessível em classes descendentes, nem pelo
programa.
• protected – Indica que a propriedade ou método estará disponível dentro da classe que
foi criado, em classes descendentes, mas NÃO estará disponível diretamente no
programa.
• Se pegarmos nosso exemplo anterior, e alterarmos a palavra public para protected, não
conseguiremos mais acessar o método "escreve" fora da classe.
• Se você tentar utilizar o trecho acima, verá um erro na tela falando que você tentou acessar um método protegido da classe. Porém, podemos criar um outro método público que utiliza o método protegido escreve.

<?php

• class NomeDaClasse

• {

• // Propriedades da classe

• public $propriedade = 'Valor';

• // Método protegido da classe

• protected function escreve () {

• echo $this->propriedade;

• }

• // Método público que utiliza o método protegido

• public function publico () {

• $this->escreve();

• }

• }

• // Instância da classe (Objeto)

• $objeto = new NomeDaClasse;

• // Acessando um método da classe

• echo $objeto->publico();

• ?>
• Perceba que fiz a utilização de uma pseudovariável chamada $this
várias vezes. $this significa que estamos acessando o objeto
(instância) atual da classe, isso porque podemos ter várias instâncias
de uma mesma classe. Para exemplificar melhor, vamos modificar
nossa classe para algo mais comum, uma pessoa, que tem nome e
sobrenome.
• <?php • // Primeira instância da classe

• class Pessoa • $pessoa_1 = new Pessoa;

• {

• // Propriedades da classe • // Altera o valor das propriedades da primeira instância

• public $nome; • $pessoa_1->nome = 'Luiz Otávio';

• public $sobrenome; • $pessoa_1->sobrenome = 'Miranda';

• // Método protegido da classe • // Segunda instância da classe

• protected function escreve () { • $pessoa_2 = new Pessoa;

• echo $this->nome;

• echo ' '; • // Altera o valor das propriedades da segunda instância

• echo $this->sobrenome; • $pessoa_2->nome = 'Letícia';

• echo '<br />'; • $pessoa_2->sobrenome = 'Barbosa';

• }

• • // Utiliza o método público das duas classes

• // Método público que utiliza o método protegido • $pessoa_1->publico();

• public function publico () { • $pessoa_2->publico();

• $this->escreve(); • ?>

• }

• }
Construtor
• Para definir um construtor para uma classe, basta criar uma função chamada de __construct, veja:

• <?php
• class Pessoa
• {
• // Construtor
• function __construct () {
• echo 'Ação';
• }
• }

• // Objeto
• $pessoa = new Pessoa;
• ?>

• Assim que você cria um objeto, a função __construct é acionada, e todas as suas ações são executadas.
Destrutor
• Um destrutor faz exatamente o contrário de um construtor, ou seja, assim que a classe é finalizada, a ação é executada.

• Para definir um destrutor de uma classe PHP, basta criar uma função chamada __destruct, veja:

• <?php
• class Pessoa
• {
• // Construtor
• function __destruct () {
• echo 'Ação';
• }
• }

• // Objeto
• $pessoa = new Pessoa;
• ?>

• Observação: Objetos PHP são finalizados automaticamente quando o código termina de ser executado. Se você quiser finalizar um objeto ao longo da execução do código, basta configurar um valor null para ele.
Construtor e Destrutor
• <?php • • // Utiliza o método público da classe
• class Pessoa • // Método público que utiliza o método protegido • $pessoa_1->publico();
• { • public function publico () {
• // Propriedades da classe • $this->escreve(); • // Finaliza a classe
• public $nome; • } • $pessoa_1 = null;
• public $sobrenome; •
• • // Destrutor • // Segunda instância da classe
• // Construtor • function __destruct(){ • $pessoa_2 = new Pessoa;
• function __construct(){ • echo '<i>Classe finalizada...</i>
<br >';
• echo '<i>Classe instanciada...</i> • // Altera o valor das propriedades da segunda instância
<br >'; • }
• $pessoa_2->nome = 'Letícia';
• } • }
• $pessoa_2->sobrenome = 'Barbosa';

• // Método protegido da classe • // Primeira instância da classe
• // Utiliza o método público da classe
• protected function escreve () { • $pessoa_1 = new Pessoa;
• $pessoa_2->publico();
• echo $this->nome;
• ?>
• echo ' '; • // Altera o valor das propriedades da primeira instância
• echo $this->sobrenome; • $pessoa_1->nome = 'Luiz Otávio';
• echo '<br />'; • $pessoa_1->sobrenome = 'Miranda';
• }
• Listando os métodos de um Objeto • function funcao2(){
• return(true);
• class OlaMundo2 { • }
• // constructor • }
• function OlaMundo2(){
• return(true); • $meus_objetos = new OlaMundo2();
• } • $metodos_classe =
get_class_methods(get_class($meus_objetos));
• // method 1
• function funcao1(){
• foreach ($metodos_classe as $nome_metodo) {
• return(true);
• echo "$nome_metodo<br>";
• }
• }
• // method 2
get_parent_class($this) , "'s </b>filho<br>";
• Devolver nome da classe pai para objeto ou • }
classe
• }

• class dad { • class child2 extends dad {


• function dad(){
• function child2(){
• // implemente alguma lógica • echo "Eu também sou a classe <b>" ,
• } get_parent_class('child2') , "'s </b>filho<br>";
• } • }
• }
• class child extends dad {
• function child(){ • $foo = new child();
• echo "Eu sou a classe <b>" , • $bar = new child2();

Potrebbero piacerti anche