PHP OOP - Classes e Objetos
Uma classe é um modelo para objetos e um objeto é uma instância de classe.
Caso OOP
Vamos supor que temos uma classe chamada Fruit. Uma fruta pode ter propriedades como nome, cor, peso, etc. Podemos definir variáveis como $nome, $cor e $peso para armazenar os valores dessas propriedades.
Quando os objetos individuais (maçã, banana, etc.) são criados, eles herdam todas as propriedades e comportamentos da classe, mas cada objeto terá valores diferentes para as propriedades.
Definir uma classe
Uma classe é definida usando a palavra- class
chave, seguida pelo nome da classe e um par de chaves ({}). Todas as suas propriedades e métodos vão dentro das chaves:
Sintaxe
<?php
class Fruit {
// code goes here...
}
?>
Abaixo declaramos uma classe chamada Fruit que consiste em duas propriedades ($name e $color) e dois métodos set_name() e get_name() para definir e obter a propriedade $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Nota: Em uma classe, as variáveis são chamadas de propriedades e as funções são chamadas de métodos!
Definir objetos
Classes não são nada sem objetos! Podemos criar vários objetos de uma classe. Cada objeto tem todas as propriedades e métodos definidos na classe, mas eles terão valores de propriedade diferentes.
Os objetos de uma classe são criados usando a palavra- new
chave.
No exemplo abaixo, $apple e $banana são instâncias da classe Fruit:
Exemplo
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
No exemplo abaixo, adicionamos mais dois métodos à classe Fruit, para definir e obter a propriedade $color:
Exemplo
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - A palavra-chave $this
A palavra-chave $this refere-se ao objeto atual e está disponível apenas dentro de métodos.
Observe o seguinte exemplo:
Exemplo
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Então, onde podemos alterar o valor da propriedade $name? Existem duas maneiras:
1. Dentro da classe (adicionando um método set_name() e usando $this):
Exemplo
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. Fora da classe (alterando diretamente o valor da propriedade):
Exemplo
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - instância de
Você pode usar a instanceof
palavra-chave para verificar se um objeto pertence a uma classe específica:
Exemplo
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>