Description Closure est une bibliothèque qui vise à surmonter les limitations de PHP concernant la sérialisation des fermetures en fournissant un wrapper qui rendra toutes les fermetures sérialisables.
Les principales fonctionnalités de la bibliothèque :
Sérialiser toute fermeture
Sérialiser des objets arbitraires
N'utilise pas eval
pour la sérialisation ou la désérialisation de fermeture
Fonctionne avec n'importe quelle version de PHP prenant en charge les fermetures
Prend en charge la syntaxe PHP 7
Gère toutes les variables référencées/importées dans use()
et encapsule automatiquement toutes les fermetures référencées/importées pour une sérialisation appropriée
Gère les fermetures récursives
Gère les constantes magiques comme __FILE__
, __DIR__
, __LINE__
, __NAMESPACE__
, __CLASS__
, __TRAIT__
, __METHOD__
et __FUNCTION__
.
Résout automatiquement tous les noms de classe, noms de fonctions et noms de constantes utilisés à l'intérieur de la fermeture
Suivre la source résidente de la fermeture à l'aide de la directive #trackme
Analyseur simple et très rapide
Toute erreur ou exception pouvant survenir lors de l'exécution d'une fermeture non sérialisée peut être détectée et traitée correctement.
Vous pouvez sérialiser/désérialiser n'importe quelle fermeture pour un nombre illimité de fois, même celles précédemment non sérialisées (cela est possible car eval()
n'est pas utilisé pour la désérialisation)
Gère les fermetures statiques
Prend en charge les fermetures signées cryptographiquement
Fournit un réflecteur qui peut vous donner des informations sur la fermeture sérialisée
Fournit un analyseur pour la bibliothèque SuperClosure
Détecte automatiquement quand la portée et/ou l'objet lié d'une fermeture doit être sérialisé pour que la fermeture fonctionne après la désérialisation.
La documentation complète de cette bibliothèque peut être trouvée ici.
Opis Closure est sous licence MIT (MIT).
PHP ^5.4 || ^7.0 || ^8.0
La description de Closure est disponible sur Packagist et peut être installée à partir d'une interface de ligne de commande en utilisant Composer.
le compositeur nécessite un opis/closure
Ou vous pouvez le référencer directement dans votre fichier composer.json
en tant que dépendance
{"require": {"opis/closure": "^3.5"} }
Si votre projet doit prendre en charge PHP 5.3, vous pouvez continuer à utiliser la version 2.x
d' Opis Closure . Sinon, en supposant que vous n'utilisez pas l'une des classes ou fonctionnalités supprimées/refactorisées (voir CHANGELOG), la migration vers la version 3.x
consiste simplement à mettre à jour votre fichier composer.json
.
Opis Closure suit les spécifications de gestion des versions sémantiques.
Nous avons ajouté cette fonctionnalité afin de pouvoir prendre en charge la sérialisation de l'objet lié d'une fermeture. L'implémentation est loin d'être parfaite, et il est vraiment difficile de la faire fonctionner sans faille. Nous allons essayer d'améliorer cela, mais nous ne pouvons rien garantir. Notre conseil concernant les fonctions OpisClosureserialize|unserialize
est donc de les utiliser avec prudence.