Table des matières
Quelle est la méthode magique __invoke ?
Cas d'utilisation courants pour __invoke
1. Callables avec état
2. Modèle de stratégie avec des objets appelables
3. Middleware ou Pipeline Stages
Notes et limitations importantes
Vérifier si un objet est appelant
Résumé
Maison développement back-end tutoriel php Création d'objets appelés en php avec la méthode magique `__invoke`

Création d'objets appelés en php avec la méthode magique `__invoke`

Aug 06, 2025 am 09:29 AM
PHP Functions

La méthode magique __invoke en PHP permet à un objet d'être appelé en fonction, ce qui lui permet d'agir comme un appelable. 2. Il est défini dans une classe et déclenché automatiquement lorsque l'objet est invoqué par des parenthèses et des arguments. 3. Les cas d'utilisation courants incluent des callmables et des modèles de stratégie et des composants de middleware et de middleware où les objets doivent se comporter comme des fonctions tout en conservant l'état ou la configuration interne. 4. Une seule méthode __invoke est autorisée par classe, mais elle peut accepter les paramètres, renvoyer n'importe quel type et inclure des conseils de type. 5. Les objets sans __invoke lanceront une erreur fatale si elle est appelée comme une fonction, donc is_callable () doit être utilisée pour vérifier l'état callable avant l'invocation. 6. La méthode __invoke améliore l'expressivité du code en combinant la flexibilité de la programmation fonctionnelle avec une conception orientée objet, mais doit être utilisée judicieusement pour éviter une complexité inutile.

Création d'objets appelés en php avec la méthode magique `__invoke`

Dans PHP, les objets ne sont généralement pas directement appelés - vous ne pouvez pas simplement utiliser un objet comme une fonction. Cependant, PHP fournit une méthode magique appelée __invoke qui vous permet de rendre un objet appelable, en le transformant en une entité "Funct" ou "Fermure comme". Cette fonctionnalité est puissante lorsque vous voulez que les objets se comportent comme des fonctions tout en conservant une conception à l'état et à l'objet.

Création d'objets appelés en php avec la méthode magique `__invoke`

Quelle est la méthode magique __invoke ?

La méthode __invoke est automatiquement déclenchée lorsqu'un script essaie d'appeler un objet comme s'il s'agissait d'une fonction. Cela fait partie de l'ensemble de «méthodes magiques» de PHP (comme __construct , __get , __set , etc.) qui fournissent des fonctionnalités spéciales lorsque certaines opérations sont effectuées sur un objet.

Vous définissez __invoke à l'intérieur d'une classe comme toute autre méthode. Une fois défini, toute instance de cette classe peut être appelée en utilisant des parenthèses et des arguments, tout comme une fonction régulière.

Création d'objets appelés en php avec la méthode magique `__invoke`
 classe Greeter {
    $ privé $ Greeting;

    fonction publique __construct ($ salutation) {
        $ this-> salutation = $ salutation;
    }

    fonction publique __invoke ($ name) {
        return "{$ this-> salutation}, $ name!";
    }
}

$ Hello = new Greeter ("Hello");
Echo $ Hello ("Alice"); // Sortie: Bonjour, Alice!

Ici, $hello est un objet, mais nous l'appelons comme une fonction: $hello("Alice") . La méthode __invoke gère cet appel.

Cas d'utilisation courants pour __invoke

1. Callables avec état

Parfois, vous avez besoin d'un comportement de type fonction qui se souvient ou utilise l'état interne. Au lieu d'utiliser des variables globales ou des fermetures avec use , vous pouvez encapsuler la logique et les données dans une classe.

Création d'objets appelés en php avec la méthode magique `__invoke`
 classe Counter {
    Count $ privé = 0;

    fonction publique __invoke () {
        retourner $ this-> compter;
    }
}

$ compteur = nouveau compteur ();
echo $ compter (); // 1
echo $ compter (); // 2
echo $ compter (); // 3

Ceci est plus propre que la gestion de l'état en dehors d'une fonction et plus réutilisable que les fonctions anonymes avec des variables liées.

2. Modèle de stratégie avec des objets appelables

Vous pouvez utiliser __invoke pour mettre en œuvre des stratégies ou des gestionnaires qui sont à la fois autonomes et interchangeables.

 classe MultiplyOperation {
    fonction publique __invoke ($ a, $ b) {
        retourner $ a * $ b;
    }
}

Classe AddOperation {
    fonction publique __invoke ($ a, $ b) {
        retourner $ a $ b;
    }
}

$ operation = new multiplyoperation ();
Echo $ opération (5, 3); // 15

$ operation = new AddOperation ();
Echo $ opération (5, 3); // 8

Ces objets peuvent être transmis partout où un appelable est attendu, comme dans array_map , usort , etc.

3. Middleware ou Pipeline Stages

Les cadres utilisent souvent __invoke pour les composants du middleware car ils sont faciles à configurer et à brancher dans des pipelines.

 classe UpperCasemiddleware {
    fonction publique __invoke ($ data) {
        return strtoupper ($ data);
    }
}

class trimmiddleware {
    fonction publique __invoke ($ data) {
        Rendre la garniture ($ data);
    }
}

$ processeur = new UpperCasemiddleware ();
$ input = "Hello World";
Processeur Echo $ ($ ENPO); // " BONJOUR LE MONDE "

Chaque middleware peut être une classe simple et à usage unique qui est facile à tester et à réutiliser.

Notes et limitations importantes

  • Une seule méthode __invoke est autorisée par classe.
  • La méthode peut accepter n'importe quel nombre de paramètres et renvoyer n'importe quel type.
  • Vous pouvez taper des arguments et des types de retour comme n'importe quelle autre méthode:
 Fonction publique __invoke (String $ valeur): int {
    return strlen (Trim ($ value));
}
  • Les objets sans __invoke lanceront une Fatal error si elle est appelée comme une fonction.

Vérifier si un objet est appelant

Avant d'invoquer un objet, vous pouvez vérifier s'il est appelable à l'aide de la fonction is_callable() :

 $ obj = new myClass ();

if (is_callable ($ obj)) {
    echo $ obj ("test");
} autre {
    Echo "L'objet n'est pas appelant.";
}

Ceci est particulièrement utile lors de l'acceptation des callables comme paramètres dans les fonctions.

Résumé

La méthode magique __invoke donne aux développeurs PHP un moyen propre de créer des objets qui agissent comme des fonctions. Il mélange la flexibilité de la programmation fonctionnelle avec la structure de la POO. Que vous construisiez des processeurs, des middleware ou des modèles de stratégie, __invoke rend votre code plus expressif et réutilisable.

Ce n'est pas quelque chose que vous utiliserez tous les jours, mais lorsque le besoin s'en fait sentir, il offre une solution élégante. N'oubliez pas: avec une grande puissance, une grande responsabilité - ne la dépassez pas là où une fonction ou une méthode simple suffirait.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Résolution de problèmes complexes avec des fonctions récursives en php Résolution de problèmes complexes avec des fonctions récursives en php Aug 02, 2025 pm 02:05 PM

Les fonctions récursives sont un moyen efficace de résoudre des problèmes complexes en PHP, en particulier adaptés à la gestion des données imbriquées, des calculs mathématiques et des traversées du système de fichiers avec des structures auto-similaires. 1. Pour les tableaux imbriqués ou les structures de menu, la récursivité peut s'adapter automatiquement à n'importe quelle profondeur, se terminer par l'exemple de base (enfant vide) et développer la couche par couche; 2. Lors du calcul des séquences factorielles et de Fibonacci, la récursivité implémente intuitivement la définition mathématique, mais le Fibonacci naïf a des problèmes de performance et peut être optimisé par la mémoire; 3. Lors de la traversée du répertoire, la récursivité peut pénétrer dans tous les sous-répertoires de niveau, ce qui est plus simple que l'itération, mais l'attention doit être accordée au risque de débordement de pile; 4. Lors de l'utilisation de la récursivité, il est nécessaire de s'assurer que le boîtier de base est accessible, évitez les appels infinis et lorsque la profondeur est grande, il doit être considéré comme une itération ou une substitution de pile explicite pour améliorer les performances et la stabilité. Ainsi, quand le problème contient "plus petit

Comprendre le pass-by-by-référence de PHP: performance et pièges Comprendre le pass-by-by-référence de PHP: performance et pièges Aug 03, 2025 pm 03:10 PM

Pass-by-ReferenceInphpDoOesNoTimproveProformancewithLareArraysorobjectsDuetocopy-on-writeAndobjecthandles, SOITSHOULDNOTBEUDEUSEFORTHATPUS

L'évolution des rappels: syntaxe appelable de première classe dans PHP 8.1 L'évolution des rappels: syntaxe appelable de première classe dans PHP 8.1 Aug 03, 2025 am 10:00 AM

Php8.1DidNoIntroduceFirst-ClasscallableSyntax; ThisFeaturescoweterInphp8.4.1.priortophp8.4, callbacksusedStrings, Arrays, Orclos ures, qui est venu à pré-album et a été amélioré la présence de théâtre, les fibres et les fibres et le bouton-aléatoire

Itération économe en mémoire avec les générateurs PHP et le mot-clé «rendement» Itération économe en mémoire avec les générateurs PHP et le mot-clé «rendement» Aug 03, 2025 am 01:38 AM

Utilisez le générateur PHP et rendez-vous les mots clés pour traiter efficacement de grands ensembles de données pour éviter le débordement de la mémoire; 1. Le générateur réalise l'évaluation paresseuse par valeur de rendement, ne laissant qu'une seule valeur en mémoire à la fois; 2. Il convient pour des scénarios tels que la lecture de fichiers grands ligne par ligne, comme l'utilisation de fgets combinés avec le rendement en ligne par ligne, et le traitement des journaux ou des fichiers CSV ligne par ligne; 3. Prise en charge de la sortie de la paire de valeurs de clé et spécifiez explicitement les noms de clés; 4. Il présente les avantages de l'empreinte de la mémoire basse, du code concis et de l'intégration transparente avec Foreach; 5. Cependant, il existe des restrictions telles que l'incapacité à rembobiner, à ne pas prendre en charge l'accès aléatoire et ne peuvent pas être réutilisées, et elle doit être recréée avant la réalisation de l'itération; Par conséquent, lorsqu'il est nécessaire de parcourir une grande quantité de données, l'utilisation de générateurs doit être prioritaire.

Techniques de simulation de la surcharge des fonctions dans PHP Techniques de simulation de la surcharge des fonctions dans PHP Aug 03, 2025 pm 01:12 PM

PHP ne prend pas en charge la surcharge de la fonction comme Java ou C, mais peut être simulé grâce à une variété de techniques; 1. Utilisez des paramètres par défaut et des paramètres optionnels pour obtenir différentes méthodes d'appel en définissant des valeurs par défaut pour les paramètres; 2. Utilisez la liste des paramètres de longueur variable (tels que ... les opérateurs), effectuez une logique différente en fonction du nombre de paramètres; 3. Effectuez des vérifications de type dans la fonction et changez le comportement en fonction du type de paramètre; 4. Utilisez les paramètres nommés de PHP8 pour ignorer les paramètres facultatifs par dénomination explicite et améliorer la lisibilité; 5. En fonction de la distribution du mode des paramètres, route vers différentes fonctions de traitement en jugeant le nombre et le type de paramètres, qui conviennent aux scénarios complexes; Ces méthodes ont des compromis et doivent être sélectionnées en fonction des besoins réels pour garantir un code clair et maintenable.

Création d'objets appelés en php avec la méthode magique `__invoke` Création d'objets appelés en php avec la méthode magique `__invoke` Aug 06, 2025 am 09:29 AM

Le__invokemagicmethodinphpallowsanobjectToballedasafonction, permettant à la réduction de la calcul.2.20e parvenue à la main-d'œuvre et aux arguments.

Tirer parti des variables statiques dans les fonctions de persistance de l'État Tirer parti des variables statiques dans les fonctions de persistance de l'État Aug 14, 2025 pm 10:46 PM

STATICVARIABLESSINSIDEFUNCTIONSETRATAGETHEURSIR VALUEBETWEENCHLLS, InitializedCecedPersistingForthEprogram’s Dessation HileLeringing a été scoped.2.EnTheyeusefulForTrackingFunctionCalCounts, cachingResults, and ImplementGenerraters, asseenincandphPpexles examples.

Master les fermetures de PHP et le mot-clé «utilisation» pour la portée lexicale Master les fermetures de PHP et le mot-clé «utilisation» pour la portée lexicale Aug 01, 2025 am 07:41 AM

Phpclosures avec USUSEKEYWORenableLexicalScopingBycaptureVariblesfromTheParentsCope.1.ClosuresaReanyMousfonctionnSeStCanAccesExternalVariblesViause.2.Bydefault, VariablesInUSEASEASEDBYVALUe; TOMODIFYTHETHEMPE

See all articles