Last active
March 31, 2023 12:21
-
-
Save wesllycode/579593d9cd29578f9595f918563ec74c to your computer and use it in GitHub Desktop.
Mostrando exemplo de como usar operador de escopo de resolução com métodos estáticos e funções estáticas.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Como normalmente se faria, chamando um objeto | |
/* | |
* Class Carro | |
* | |
* @params String $modelo | |
* @return string | |
*/ | |
Class Carro | |
{ | |
public string $modelo = 'corolla'; | |
public function modelo() :String { | |
return $this->modelo; | |
} | |
} | |
$modeloDoMeuCarro = new Carro(); | |
var_dump($modeloDoMeuCarro->modelo()); | |
/* | |
Mostrando um exemplo de como usar operador de resolução de Escopo | |
com constante | |
*/ | |
/* | |
* Class Nome | |
* | |
* @params String $meuNome | |
* @return string | |
*/ | |
Class Nome | |
{ | |
const meuNome = 'WesllyCode'; | |
} | |
var_dump(Nome::meuNome); | |
// Mostrando um exemplo do uso método estático | |
/* | |
* Class Automovel | |
* | |
* @params String $tipo | |
* @return string | |
*/ | |
Class Automovel | |
{ | |
// Declarei a propriedade como static | |
public static string $tipo = 'Carro'; | |
/* | |
Aqui é um método normal, não posso acessar usando operador de resolução | |
de escopo, porque não é um método/função static. | |
*/ | |
public function qualOtipoDoMeuAutomovel() :String | |
{ | |
return $this->tipo; | |
} | |
} | |
// Aqui eu posso acessa propriedade direto pela class, usando método static. | |
var_dump(Automovel::$tipo); | |
// Exemplo usando operador de resolução de escopo, com método do tipo estático | |
/* | |
* Class Veiculo | |
* | |
* @params String $cor | |
* @return string | |
*/ | |
Class Veiculo | |
{ | |
// Criei uma propriedde do tipo estático | |
public static String $cor = 'vermelho'; | |
public static function corDoMeuVeiculo() :String | |
{ | |
/* | |
Não posso usar $this, no método estático eu uso SELF ou PARENT | |
No self, eu uso quando eu quero acessar propriedade que está na | |
mesma class | |
*/ | |
return SELF::$cor; | |
} | |
} | |
/* | |
* Class Moto | |
* | |
* @return string | |
*/ | |
Class Moto extends Veiculo | |
{ | |
public static function corDoMeuVeiculo() :String | |
{ | |
/* | |
Não posso usar $this, no método estático eu uso SELF ou PARENT | |
No parent, eu uso quando eu quero acessar propriedade que está em | |
outra class | |
*/ | |
return PARENT::$cor; | |
} | |
} | |
var_dump(Veiculo::corDoMeuVeiculo()); | |
var_dump(Moto::corDoMeuVeiculo()); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment