


Présentation de la nouvelle méthode magique __invoke en PHP 5.3
PHP a ajouté une nouvelle méthode magique appelée __invoke depuis la version 5.3. En utilisant cette méthode, vous pouvez appeler directement l'objet après avoir créé l'instance. Comme le montre l'exemple suivant :
class testClass { public function __invoke { print "hello world"; } } $n = new testClass; $n();
Le résultat de l'exécution est :
hello world。
L'exemple officiel de PHP est le suivant :
class CallableClass { public function __invoke($x) { var_dump($x); } } $obj = new CallableClass; $obj(5); var_dump(is_callable($obj));
Pièce jointe : Explication détaillée des autres méthodes magiques PHP :
Les classes en PHP peuvent utiliser des méthodes magiques. Il stipule que les méthodes commençant par deux traits de soulignement (__) sont réservées comme méthodes magiques, il est donc recommandé que les noms de fonctions ne commencent pas par __, sauf s'il s'agit de surcharger une méthode magique existante.
Les noms de fonctions __construct, __destruct, __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __invoke, __set_state et __clone sont magiques dans les classes PHP. Vous ne pouvez pas avoir de fonctions avec ces noms dans aucune classe. de vos classes à moins que vous ne souhaitiez la fonctionnalité magique qui leur est associée.
Les deux méthodes suivantes sont conçues pour les propriétés qui ne sont pas déclarées dans la classe et leur classe parent.
__get($property) Cette méthode sera déclenchée lorsqu'une propriété non définie est appelée, et le paramètre passé est le nom de la propriété à laquelle on accède.
__set($property,$value) Lors de l'attribution d'une valeur à une propriété non définie, cette méthode sera déclenchée et les paramètres transmis sont le nom de la propriété et la valeur à définir.
La non-déclaration inclut ici les attributs dont le contrôle d'accès est protégé et privé (c'est-à-dire les attributs qui n'ont aucune autorisation d'accès) lorsqu'ils sont appelés à l'aide d'objets.
Comme les méthodes __get et __set, le non déclaré inclut ici les attributs dont le contrôle d'accès est protégé et privé (c'est-à-dire les attributs qui n'ont aucune autorisation d'accès) lorsqu'ils sont appelés à l'aide d'un objet.
Les méthodes non définies ici incluent des méthodes qui n'ont pas l'autorisation d'accéder ; si la méthode n'existe pas, accédez à la classe parent pour trouver la méthode. Si elle n'existe pas dans la classe parent, appelez le __call. () de cette classe, si la méthode __call() n'existe pas dans cette classe, accédez à la méthode __call() dans la classe parent.
Fonction __autoload, qui est automatiquement appelée lorsque vous essayez d'utiliser une classe qui n'a pas encore été définie. En appelant cette fonction, le moteur de script a une dernière chance de charger les classes requises avant que PHP échoue avec une erreur.
Remarque : les exceptions levées dans la fonction __autoload ne peuvent pas être interceptées par le bloc d'instruction catch et provoquer des erreurs fatales, elles doivent donc être interceptées dans la fonction elle-même.
Méthode constructeur __construct, cette méthode est appelée lors de la création d'un objet. L'avantage d'utiliser cette méthode par rapport à php4 est que la méthode constructeur peut avoir un nom unique, quel que soit le nom de la classe. dans. De cette façon Lorsque vous modifiez le nom de la classe, vous n'avez pas besoin de changer le nom du constructeur.
Méthode destructeur __destruct, PHP appellera cette méthode avant que l'objet ne soit détruit (c'est-à-dire avant qu'il ne soit effacé de la mémoire). Par défaut, PHP libère uniquement la mémoire occupée par les propriétés des objets et détruit les ressources liées aux objets. Le destructeur permet d'exécuter du code arbitraire pour effacer la mémoire après avoir utilisé un objet. Lorsque PHP décide que votre script n'est plus associé à l'objet, le destructeur sera appelé.
Dans l'espace de noms d'une fonction, cela se produira au retour de la fonction. Pour les variables globales, cela se produit à la fin du script. Si vous souhaitez détruire explicitement un objet, vous pouvez attribuer n'importe quelle autre valeur à la variable pointant vers l'objet. Généralement, attribuez la variable à null ou appelez unset.
L'affectation d'objet en php5 utilise l'affectation de référence. Si vous souhaitez copier un objet, vous devez utiliser la méthode clone Lorsque vous appelez cette méthode, l'objet appellera automatiquement la méthode magique __clone. certaines opérations lors de la copie de l'objet L'opération d'initialisation peut être implémentée dans la méthode __clone.
La méthode __tostring est automatiquement appelée lors de la conversion d'un objet en chaîne, par exemple lors de l'utilisation de echo pour imprimer l'objet.
Avant php5.2.0, la méthode __tostring ne pouvait prendre effet que lorsqu'elle était utilisée en combinaison avec echo() ou print(). Après php5.2.0, il peut prendre effet dans n'importe quel environnement de chaîne (par exemple, via printf(), en utilisant le modificateur %s), mais il ne peut pas être utilisé dans des environnements sans chaîne (comme en utilisant le modificateur %d). Depuis php5.2.0, si un objet qui ne définit pas la méthode __tostring est converti en chaîne, une erreur e_recoverable_error sera signalée.
__wakeup Lors de la désérialisation, appelez
serialize() pour vérifier s'il existe une fonction avec le nom magique __sleep dans la classe. Si tel est le cas, la fonction s'exécutera avant toute sérialisation. Il efface l'objet et doit renvoyer un tableau contenant les noms de toutes les variables de l'objet qui doivent être sérialisées.
Le but de l'utilisation de __sleep est de fermer toutes les connexions à la base de données que l'objet peut avoir, de soumettre des données en attente ou d'effectuer des tâches de nettoyage similaires. De plus, cette fonction est utile si vous disposez d'objets très volumineux qui n'ont pas besoin d'être stockés complètement.
PHP À l'inverse, unserialize() vérifie l'existence d'une fonction portant le nom magique __wakeup. Cette fonction peut reconstruire toutes les ressources que l'objet peut avoir, s'il est présent. Le but de l'utilisation de __wakeup est de rétablir toutes les connexions à la base de données qui auraient pu être perdues lors de la sérialisation et de gérer d'autres tâches de réinitialisation.
Lorsque vous essayez d'appeler un objet en appelant une fonction, la méthode __invoke est automatiquement appelée.
Cela fonctionne de manière similaire à la méthode magique __call(), __callstatic() sert à gérer les appels de méthode statiques.
PHP resserre la définition de la méthode __callstatic() ; elle doit être publique et doit être déclarée statique. De même, la méthode magique __call() doit être définie comme publique, comme toutes les autres méthodes magiques.
Pour plus d'articles sur la nouvelle méthode magique __invoke en PHP 5.3, veuillez faire attention au site Web PHP chinois !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...
