<< Click to Display Table of Contents >> Constantes e Estaticos |
![]() ![]() ![]() |
require __DIR__ . '/classes/autoload.php';
use classes\model\Pessoa;
$pessoa = new Pessoa("Junior", "RG", new DateTime("1977-07-02"));
var_dump($pessoa);
// CONSTANTES
// como se acessa uma constante (pela classe não objeto)
echo "<p>".Pessoa::PLANETA."</p>";
echo "<p>".Pessoa::RACA."</p>";
// echo "<p>".Pessoa::GALAXIA."</p>"; --- protegido não pode acessar
$reflexao = new ReflectionClass($pessoa);
// também serve (pela classe):
//$reflexao = new ReflectionClass(Pessoa::class);
var_dump($reflexao->getConstants());
// STATICOS
Pessoa::$pais = "EUA";
echo "<p>".Pessoa::$continente."</p>";
echo "<p>".Pessoa::$pais."</p>";
Pessoa::setContinente();
echo "<p>".Pessoa::$continente."</p>";
Saida
D:\xampp\htdocs\netbeans\aqui.php:10:
object(classes\model\Pessoa)[2]
private 'nome' => string 'Junior' (length=6)
private 'doc' => string 'RG' (length=2)
private 'data' =>
object(DateTime)[3]
public 'date' => string '1977-07-02 00:00:00.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'America/Sao_Paulo' (length=17)
Terra
Humano
D:\xampp\htdocs\netbeans\aqui.php:23:
array (size=3)
'RACA' => string 'Humano' (length=6)
'PLANETA' => string 'Terra' (length=5)
'GALAXIA' => string 'Via lactea' (length=10)
americano
EUA
africano
namespace classes\model;
class Pessoa {
// constantes - são da classe e não do objeto
const RACA = "Humano";
const PLANETA = "Terra";
protected const GALAXIA = "Via lactea";
// métodos estáticos - da classe e não do objeto
public static $continente = "americano";
public static $pais = "Brasil";
// propriedades
private $nome;
private $doc;
private $data;
// métodos estáticos
public static function setContinente() {
// $this não existe ($this = este objeto)
// $self = esta CLASSE
self::$continente = "africano";
}
// a "\" é pq a classe é default do php e não faz parte do namespace
public function __construct($nome, $doc, \DateTime $data) {
$this->nome = $nome;
$this->doc = $doc;
$this->data = $data;
}
public function getData(): \DateTime {
return $this->data;
}
}