Resumo : neste tutorial você aprenderá sobre objetos PHP, como definir uma classe e como criar um objeto a partir de uma classe.
O que é um objeto
Se você observar o mundo ao seu redor, encontrará muitos exemplos de objetos tangíveis: lâmpadas, telefones, computadores e carros. Além disso, você pode encontrar objetos intangíveis, como contas bancárias e transações.
Todos esses objetos compartilham duas características principais comuns:
- Estado
- Comportamento
Por exemplo, uma conta bancária tem o estado que consiste em:
- Número de conta
- Equilíbrio
Uma conta bancária também possui os seguintes comportamentos:
- Depósito
- Retirar
Os objetos PHP são conceitualmente semelhantes aos objetos do mundo real porque consistem em estado e comportamento.
Um objeto mantém seu estado em variáveis que são frequentemente chamadas de propriedades . Um objeto também expõe seu comportamento por meio de funções conhecidas como métodos .
O que é uma aula?
No mundo real, você pode encontrar muitos tipos de objetos iguais. Por exemplo, um banco tem muitas contas bancárias. Todos eles possuem números de contas e saldos.
Essas contas bancárias são criadas a partir do mesmo modelo. Em termos orientados a objetos, dizemos que uma conta bancária individual é uma instância de uma classe Conta Bancária.
Por definição, uma classe é o modelo de objetos. Por exemplo, na classe Conta Bancária, você pode criar muitos objetos de conta bancária.
O seguinte ilustra o relacionamento entre a BankAccount
classe e seus objetos. A partir da BankAccount
classe você pode criar muitos BankAccount
objetos. E cada objeto tem seu próprio número de conta e saldo.
Definir uma classe
Para definir uma classe, você especifica a class
palavra-chave seguida por um nome como este:
<?php
class ClassName
{
//...
}
Linguagem de código: HTML, XML ( xml )
Por exemplo, o seguinte define uma nova classe chamada BankAccount
:
<?php
class BankAccount
{
}
Linguagem de código: HTML, XML ( xml )
Por convenção, você deve seguir estas regras ao definir uma classe:
- O nome de uma classe deve estar em maiúsculas, onde cada palavra é maiúscula. Por exemplo,
BankAccount
,Customer
,Transaction
eDebitNote
. - Se o nome de uma classe for um substantivo, ele deverá estar no singular.
- Defina cada classe em um arquivo PHP separado.
Na BankAccount
classe, você pode criar um novo objeto de conta bancária usando a new
palavra-chave como esta:
<?php
class BankAccount
{
}
$account = new BankAccount();
Linguagem de código: HTML, XML ( xml )
Nesta sintaxe, the $account
é uma variável que faz referência ao objeto criado pela BankAccount
classe. Os parênteses que seguem o BankAccount
nome da classe são opcionais. Portanto, você pode criar um novo BankAccount
objeto como este:
$account = new BankAccount;
Linguagem de código: PHP ( php )
O processo de criação de um novo objeto também é chamado de instanciação. Em outras palavras, você instancia um objeto de uma classe. Ou você cria um novo objeto a partir de uma classe.
A BankAccount
classe está vazia porque não possui nenhum estado e comportamento.
Adicionar propriedades a uma classe
Para adicionar propriedades à BankAccount
classe, você coloca variáveis dentro dela. Por exemplo:
<?php
class BankAccount
{
public $accountNumber;
public $balance;
}
Linguagem de código: HTML, XML ( xml )
A BankAccount
classe tem duas propriedades $accountNumber
e $balance
. Na frente de cada propriedade, você vê a public
palavra-chave.
A public
palavra-chave determina a visibilidade de uma propriedade . Neste caso, você pode acessar a propriedade de fora da classe.
Para acessar uma propriedade, você usa o operador de objeto ( ->
) assim:
<?php
$object->property;
Linguagem de código: HTML, XML ( xml )
O exemplo a seguir mostra como definir os valores das propriedades accountNumber
e :balance
<?php
class BankAccount
{
public $accountNumber;
public $balance;
}
$account = new BankAccount();
$account->accountNumber = 1;
$account->balance = 100;
Linguagem de código: HTML, XML ( xml )
Além da public
palavra-chave, o PHP também possui palavras private
– protected
chave que você aprenderá no tutorial sobre modificadores de acesso .
Adicionar métodos a uma classe
O seguinte mostra a sintaxe para definir um método em uma classe:
<?php
class ClassName
{
public function methodName(parameter_list)
{
// implementation
}
}
Linguagem de código: HTML, XML ( xml )
Assim como uma propriedade, um método também possui um dos três modificadores de visibilidade: public
, private
e protected
. Se você definir um método sem nenhum modificador de visibilidade, o padrão será public
.
O exemplo a seguir define o deposit()
método para a BankAccount
classe:
<?php
class BankAccount
{
public $accountNumber;
public $balance;
public function deposit($amount)
{
if ($amount > 0) {
$this->balance += $amount;
}
}
}
Linguagem de código: HTML, XML ( xml )
O deposit()
método aceita um argumento $amount
. Verifica se $amount
é maior que zero antes de adicioná-lo ao saldo.
Para chamar um método, você também usa o operador de objeto ( ->
) da seguinte forma:
$object->method(arguments)
Linguagem de código: PHP ( php )
A nova sintaxe no deposit()
método é a $this
variável. A $this
variável é o objeto atual da BankAccount
classe.
Por exemplo, quando você cria um novo objeto $account
e chama o deposit()
método, o $this
interior do método é o $account
objeto:
$account = new BankAccount();
$account->accountNumber = 1;
$account->balance = 100;
$account->deposit(100);
Linguagem de código: PHP ( php )
Da mesma forma, você pode adicionar o withdraw()
método à BankAccount
classe da seguinte maneira:
<?php
class BankAccount
{
public $accountNumber;
public $balance;
public function deposit($amount)
{
if ($amount > 0) {
$this->balance += $amount;
}
}
public function withdraw($amount)
{
if ($amount <= $this->balance) {
$this->balance -= $amount;
return true;
}
return false;
}
}
Linguagem de código: HTML, XML ( xml )
O withdraw()
método verifica o saldo atual.
Se o saldo for menor que o valor do saque, o withdraw()
método retornará false
.
Posteriormente, você aprenderá como lançar uma exceção. Caso contrário, deduz do saldo o valor do saque e devolve true
.
Resumo
- Objetos têm estados e comportamentos.
- Uma classe é um modelo para a criação de objetos.
- As propriedades representam o estado do objeto e os métodos representam o comportamento do objeto. Propriedades e métodos têm visibilidade.
- Use a
new
palavra-chave para criar um objeto a partir de uma classe. - A
$this
variável faz referência ao objeto atual da classe.