Constantes e Estaticos

<< Click to Display Table of Contents >>

Navigation:  Objetos >

Constantes e Estaticos

Previous pageReturn to chapter overviewNext page

 

Principal.php

 
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

Pessoa.php

 

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;
    }  
}