rmk / callback-resolver
该包最新版本(v1.1.1)没有可用的许可证信息。
回调容器和解析服务
v1.1.1
2022-01-23 14:33 UTC
Requires
- php: ^7.4 || ^8.0
- psr/container: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-09-23 20:17:59 UTC
README
从任何回调形式(数组、字符串等)中简单的回调解析器。它还支持从服务容器中提取服务。
示例
<?php // Prepare some callbacks in different forms: function my_awesome_function() { // do some awesome stuff ... } $fnCallback = function() { // do something cool here... }; class MyGreatClass { public function myMethod() { // do other cool stuff ... } public function __invoke() { // Call me when you want to use the object as a function... } }; $object = new MyGreatClass(); $stringCallback = 'my_awesome_function'; $arrayCallback = [$objCallback, 'myMethod']; // A service container contains a service with name 'MyGreatService' and its value is $object /** @var Psr\Container\ContainerInterface $serviceContainer */ $serviceContainer = MyServiceContainerFactory::create(); $resolver = new Terry\CallbackResolver\CallbackResolver($serviceContainer); $resolver->resolve($stringCallback); // Will return a closure for 'my_awesome_function' $resolver->resolve($arrayCallback); // Will return a closure for 'myMethod' from $object $resolver->resolve(['MyGreatService']); // Will return the $object because it is callable (contains __invoke() method) $resolver->resolve(['MyGreatService', 'myMethod']); // Will return a closure to 'myMethod' from $object $resolver->resolve(MyGreatClass::class); // Can also resolve a callback via class name if it is callable (contains __invoke() method) $resolver->resolve([MyGreatClass::class, 'myMethod']); //// Will return a closure to 'myMethod' from new MyGreatClass instance