Sobes.tech
Junior

Que métodos mágicos da classe você conhece?

sobes.tech IA

Resposta da IA

Em PHP, existe uma série de métodos especiais chamados "mágicos". Eles são chamados automaticamente em certas ações com objetos de classe. Aqui estão alguns deles:

  • __construct(): É chamado ao criar uma nova instância da classe. Usado para inicializar o objeto.
  • __destruct(): É chamado ao destruir o objeto (por exemplo, ao terminar a execução do script ou ao chamar explicitamente unset()). Usado para liberar recursos.
  • __call($name, $arguments): É chamado ao tentar invocar um método do objeto que não é acessível (não visível no contexto atual). $name é o nome do método chamado, $arguments é um array com seus argumentos.
  • __callStatic($name, $arguments): Semelhante a __call(), mas chamado ao tentar invocar um método estático não acessível.
  • __get($name): É chamado ao tentar ler uma propriedade do objeto que não é acessível. $name é o nome da propriedade.
  • __set($name, $value): É chamado ao tentar atribuir a uma propriedade não acessível. $name é o nome da propriedade, $value o valor atribuído.
  • __isset($name): É chamado ao verificar se uma propriedade não acessível existe usando isset() ou empty(). $name é o nome da propriedade.
  • __unset($name): É chamado ao tentar remover uma propriedade não acessível usando unset(). $name é o nome da propriedade.
  • __sleep(): É chamado antes de serializar o objeto com serialize(). Deve retornar um array com os nomes das propriedades a serem serializadas.
  • __wakeup(): É chamado logo após a deserialização do objeto com unserialize(). Pode ser usado para restaurar conexões ou recursos.
  • __toString(): É chamado ao tentar converter o objeto em uma string (por exemplo, ao usar echo). Deve retornar uma representação em string do objeto.
  • __invoke(...$args): É chamado ao tentar usar o objeto como uma função.
  • __set_state(array $properties): É chamado ao restaurar um objeto com var_export(). Recebe um array de propriedades exportadas por var_export().
  • __clone(): É chamado ao clonar um objeto com clone. Usado para cópias profundas (por exemplo, objetos dentro de um objeto).

É importante usar esses métodos com cautela, pois seu uso incorreto pode levar a comportamentos imprevisíveis do código.