Junior
Qual é a diferença entre as palavras-chave self e this em PHP?
sobes.tech IA
Resposta da IA
$this refere-se à instância atual do objeto. self refere-se à classe atual (num contexto estático ou dentro de métodos para aceder a membros estáticos).
$this:
- É usado para aceder às propriedades e métodos de uma instância concreta da classe.
- Aplica-se dentro de métodos não estáticos.
class MyClass {
public $instanceProperty = 'Olá';
public function getInstanceProperty() {
// Acesso à propriedade da instância atual
return $this->instanceProperty;
}
}
self:
- É usado para aceder às propriedades e métodos estáticos da classe.
- Aplica-se dentro de métodos estáticos e não estáticos.
class MyClass {
public static $staticProperty = 'Mundo';
public static function getStaticProperty() {
// Acesso à propriedade estática
return self::$staticProperty;
}
public function accessStaticFromInstance() {
// Acesso à propriedade estática a partir de um método não estático
return self::$staticProperty;
}
}
Exemplo de uso conjunto de $this e self:
class Example {
public $instanceId;
private static $count = 0;
public function __construct() {
// Uso de self para incrementar o contador estático
self::$count++;
// Uso de $this para definir a propriedade da instância
$this->instanceId = self::$count;
}
public static function getCount() {
// Uso de self para obter a propriedade estática
return self::$count;
}
public function getInstanceId() {
// Uso de $this para obter a propriedade da instância
return $this->instanceId;
}
}