Maison  >  Article  >  développement back-end  >  Comment comprendre le rechargement php

Comment comprendre le rechargement php

王林
王林avant
2020-01-31 21:34:452363parcourir

Comment comprendre le rechargement php

Nous savons que la surcharge PHP est différente de la surcharge Java. Java autorise plusieurs fonctions portant le même nom dans une classe, et chaque fonction a des paramètres différents, tandis que PHP n'autorise qu'une seule fonction portant le même nom. Par exemple, Java peut avoir plusieurs constructeurs, mais PHP ne peut avoir qu’un seul constructeur.

La surcharge en PHP fait référence à la création dynamique de propriétés et de classes via des méthodes magiques.

1. Surcharge des attributs : __get et __set

2. Surcharge des méthodes : __call et __callStatic

(Partage de vidéos d'apprentissage en ligne : Tutoriel vidéo php)

Par exemple : la classe de requête de Laravel implémente la surcharge d'attributs, rendant le code plus concis

$name = $request->name;

Cet attribut n'existe pas dans la classe, mais est passé via la méthode Magic pour accéder, le spécifique l'implémentation est la suivante :

public function __get($key)
{    
return Arr::get($this->all(), $key, function () use ($key) { 
       return $this->route($key);    });
}

Cette méthode d'implémentation est largement utilisée, par exemple, le principe d'implémentation inductive :

class Foo
{   
    private $params = [];
    function __construct(array $params = [])
    {
        $this->params = $params;
    }
    public function __set($name, $value)
    {
        $this->params[$name] = $value;
    }
    public function __get($name)
    {
        return $this->params[$name];
    }
    public function __isset($name)
    {
        return isset($this->params[$name]);
    }
    public function __unset($name)
    {
        unset($this->params[$name]);
    }
}

Articles et tutoriels associés recommandés : tutoriel php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer