O que são métodos mágicos em PHP? e como implementá-los?



Este artigo fornecerá a você um conhecimento detalhado e abrangente dos vários métodos mágicos em PHP com exemplos.

Dentro , funções especiais podem ser definidas de forma que possam ser chamadas automaticamente e não requeiram nenhuma chamada de função para executar o código dentro dessas funções. Esse recurso está disponível em um método especial conhecido como métodos mágicos. Neste artigo, discutiremos os principais métodos mágicos em PHP.

O que são métodos mágicos em PHP?

Métodos que começam com 2 sublinhados (__) são geralmente chamados de métodos mágicos em PHP. Esses nomes de métodos são limitados a alguma lista de PHP palavras-chave suportadas que são reservadas. Portanto, nenhuma função deve ser definida com o nome de métodos mágicos do PHP.





Magic-Methods-in-PHP

Normalmente, essas funções devem ser definidas pelo usuário e não há necessidade de chamá-las explicitamente.



Lista de métodos mágicos em PHP

  • __construir()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ property)
  • __set ($ property, $ value)
  • __isset ($ content)
  • __unset ($ content)
  • __dormir()
  • __acorde()
  • __para sequenciar()
  • __invocar()
  • __set_state ($ array)
  • __clone()
  • __debugInfo ()
  • __construir(): É um método que é chamado automaticamente após a criação de um objeto. Qualquer número de argumentos pode ser definido aqui e será passado quando os objetos forem criados.
class sample {function user_def () {echo 'user defined constructor'} function __construct () {echo 'predefined constructor'}} $ obj = new sample ()?>

  • __destruct (): Destruidor é um recurso comum da linguagem orientada a objetos que é acionado assim que não há outras referências a um objeto específico.
user_def () // verifique se o objeto foi destruído ou não echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Este método é chamado quando um método indefinido ou inacessível é chamado. O que significa que ele é chamado quando um método indefinido ou inacessível é chamado em um objeto.
run ('teacher') // Se o método que não existia for chamado dentro do objeto, então o método __call () será chamado automaticamente. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



diferença entre javascript e jquery
  • __callStatic ($ fun, $ arg): Este método é chamado quando um método indefinido ou inacessível é chamado de maneira estática.
user_define ()?>

  • __get ($ property): Este método é usado para obter valores para propriedades de classe criadas dinamicamente pela sobrecarga de propriedade do PHP.
name = $ name $ this-> reg = $ reg} função pública __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Instancie o objeto com a classe Student e atribua valores iniciais às propriedades com o construtor. echo 'Nome:'. $ obj-> nome. '' // Quando a propriedade privada é acessada, o método __get () será chamado automaticamente, para que possamos obter o valor da propriedade indiretamente. echo 'reg :'. $ obj-> reg. '' // O método __get () é chamado automaticamente, e retorna valores diferentes de acordo com o próprio objeto. ?>

  • __set ($ property, $ value): Este método é usado para colocar valores para propriedades de classe criadas dinamicamente pela sobrecarga de propriedade do PHP.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My name is '. $ this-> name.', Meu número de registro é '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Observe que o valor inicial será alterado pelo código abaixo. $ obj-> name = 'Sushma' // A propriedade 'name' será atribuída com sucesso. Se não houver método __set (), o programa lançará uma exceção. $ obj-> age = 16 // A propriedade 'reg' será atribuída com sucesso. $ obj-> reg = 160 // 160 é um valor inválido, por isso não foi atribuído. $ obj-> fun ()?>

  • __isset ($ content); Este método será chamado ao chamar isset () ou empty () para um membro indefinido ou inacessível. Ele é chamado automaticamente durante a verificação se uma propriedade sobrecarregada necessária está definida ou não, usando a função isset () do PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} função pública __isset ($ content) {echo 'A propriedade {$ content} é privada, o método __isset () é chamado automaticamente. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Inicialmente atribuído. echo isset ($ obj-> gênero), '' echo isset ($ obj-> nome), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ content): Este método será chamado ao chamar reset () para um membro indefinido ou inacessível.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'É chamado automaticamente quando usamos o método unset () fora da classe. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Inicialmente atribuído. unset ($ obj-> gênero) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __dormir(): Este método é chamado primeiro durante a execução de serialize (). Ele retorna a matriz de propriedade do objeto na limpeza de objetos de classe PHP antes da serialização.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'É chamada quando o método serialize () é chamado fora da classe. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Deve retornar um valor cujos elementos são o nome das propriedades retornadas. }} $ obj = new Student ('Ashok') // Inicialmente atribuído. echo serialize ($ obj) echo ''?>

  • __acorde(): Este método é chamado enquanto a desserialização () é executada. Isso iria reverter o trabalho para restaurar as propriedades e recursos dos objetos ao invocar a desserialização ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'É chamada quando o método serialize () é chamado fora da classe. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Deve retornar um valor cujos elementos são o nome das propriedades retornadas. } public function __wakeup () {echo 'É chamada quando o método unserialize () é chamado fora da classe. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Inicialmente atribuído. var_dump (serializar ($ obj)) var_dump (desserializar (serializar ($ obj)))?>

  • __para sequenciar(): Este método será chamado ao usar o método echo para imprimir um objeto diretamente. Espera-se que ele retorne um valor de string ao usar instâncias de classe com instruções de impressão PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} função pública __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Inicialmente atribuído. echo $ obj?>

  • __invocar(): Este método é definido em uma classe que será chamada ao tentar chamar um objeto de forma a chamar uma função.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} função pública __invoke () {echo 'Este é um objeto'}} $ obj = new Student ('Ashok') // Inicialmente atribuído . $ obj ()?>

  • __set_state ($ array): Este método é chamado ao chamar var_export (). É um método estático invocado durante a exportação do array de propriedades de objetos e espera essa variável de array como seu argumento.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Inicialmente atribuído. var_export ($ obj)?>

  • __clone(): Este método é chamado quando o objeto é copiado.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'você está clonando o objeto. '}} $ obj = new Student (' Ashok ') // Inicialmente atribuído. $ obj2 = clone $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Este método é chamado por var_dump () enquanto despeja um objeto para obter as propriedades que devem ser mostradas. Se o método não estiver definido em um objeto, todas as propriedades públicas, protegidas e privadas serão mostradas.
prop = $ val} public function __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

Com isso, chegamos ao final deste método mágico no artigo PHP. Espero que você tenha uma ideia dos vários métodos mágicos do PHP.

Confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo.

Tem alguma questão para nós? Mencione-o na seção de comentários de ” Métodos mágicos em PHP ”E eu voltarei para você.