Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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';
• }
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;
• }
• }
•
• function nome_funcao($par1, $par2, $par3...$parN)
• {
• //instruções
• }
• 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
• } •
• <?php
• 1 • function exibir_mensagem($nome)
• 2 • {
• 3 • echo "Olá\n";
• 4 • echo $nome;
• 5 • }
• •
• { • exibir_mensagem("Joel Rodrigues");
• echo $nome
• } • A chamada à função sem parâmetro é ainda mais simples, bastaria não informar nenhum valor entre parênteses.
<?php
• class NomeDaClasse
• {
• // Propriedades da classe
• echo $this->propriedade;
• }
• $this->escreve();
• }
• }
• 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
• {
• echo $this->nome;
• }
• $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
• }