Skip to content

Instantly share code, notes, and snippets.

@wesllycode
Last active March 31, 2023 12:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wesllycode/579593d9cd29578f9595f918563ec74c to your computer and use it in GitHub Desktop.
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.
<?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