Variáveis membros de uma classe são chamadas "propriedades". Pode-se também observar serem referidas utilizando outros termos como "atributos" ou "campos", mas para o propósito desta referência, usaremos "propriedades". São definidas usando uma das palavras-chave public, protected, or private, seguidas de uma declaração normal de variável. Esta declaração pode incluir sua inicialização, porém esta inicialização deve ser um valor constante--isso é, deve ser possível avaliá-lo em tempo de compilação e não deve-se depender de informações de tempo de execução.
See Visibilidade for more information on the meanings of public, protected, and private.
Nota:
Para manter a retrocompatibilidade com o PHP 4, o PHP 5 continuará aceitando o uso da palavra-chave var na declaração de propriedades ao invés de (ou em adição a) public, protected, ou private. Entretanto, var não é mais obrigatório. Em versões entre o PHP 5.0 e 5.1.3, o uso de var era considerado obsoleto e emitiria um aviso
E_STRICT
, mas desde o PHP 5.1.3, seu uso não é mais obsoleto e não será emitido um aviso.Caso declare uma propriedade usando var ao invés de public, protected, ou private, o PHP 5 tratará a propriedade como se tivesse declarada como public.
Métodos dentro de classes podem acessar propriedades não estáticas usando -> (Operador de Objeto): $this->property (onde property é o nome da propriedade). Propriedades estáticas são acessadas utilizando os :: (Dois pontos dublo): self::$property. Veja Palavra-chave Static para mais informações sobre a diferente entre propriedades estáticas e não estáticas.
A pseudo-variável $this está disponível dentro de métodos de qualquer classe quando o método é chamado dentro do contexto do objeto. $this faz referência ao objeto chamado (geralmente o objeto o qual o método pertence, mas possível outro objeto, se o método é chamado estaticamente do contexto de um segundo objeto).
Exemplo #1 declaração de propriedades
<?php
class SimpleClass
{
// valid as of PHP 5.6.0:
public $var1 = 'hello ' . 'world';
// valid as of PHP 5.3.0:
public $var2 = <<<EOD
hello world
EOD;
// valid as of PHP 5.6.0:
public $var3 = 1+2;
// invalid property declarations:
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
// valid property declarations:
public $var6 = myConstant;
public $var7 = array(true, false);
// valid as of PHP 5.3.0:
public $var8 = <<<'EOD'
hello world
EOD;
}
?>
Nota:
Existem algumas funções interessantes para manipulação de classes e objetos. Se desejar dê uma olhada nas funções de Classes/Objetos.
Diferentemente, heredocs, nowdocs podem ser utilizados em qualquer contexto de dados estáticos, incluindo assim, declaração de propriedades.
Exemplo #2 Exemplo de uso do nowdoc para inicializar uma propriedade
<?php
class foo {
// As of PHP 5.3.0
public $bar = <<<'EOT'
bar
EOT;
public $baz = <<<EOT
baz
EOT;
}
?>
Nota:
O suporte ao nowdoc foi adicionado no PHP 5.3.0.