farafiri / easy-callback
创建简单的回调函数的实用工具,以便以可读的方式应用于过滤和映射函数
dev-master
2019-10-26 08:47 UTC
Requires
- php: >=5.3.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-23 12:25:26 UTC
README
提供创建回调的简短且简单方式的库。
函数式编程是一个非常强大的概念,我很喜欢在我的工作中使用这种范式。然而,当前的PHP闭包语法相当冗长。请查看以下示例
/** filter books written by $author */ $books = array_filter($allBooks, function($book) use ($author) { return $book->getAuthor() === $author; });
与
use EasyCallback\f; /** filter books written by $author */ $books = array_filter($allBooks, f()->getAuthor()->ecEq($author));
文档/示例
库始终在EasyCallback\Wrapper类的实例上工作(此库中的所有函数都返回EasyCallback\Wrapper的实例)。
use EasyCallback\f; f(); //Callable returning first parameter. Equivalent to: function ($p1) {return $p1;}; f(2); //Callable returning 2-nd parameter. Equivalent to: function ($p1, $p2) {return $p2;}; f($value, true); //Callable returning $value. Equivalent to function () use ($value) {return $value;}; //EasyCallback\Wrapper support array syntax: $f['a']; // Equivalent to: function(...$params) use ($f) {return $f(...$params)['a'];} f()['a']; //Equivalent to: function($p1) {return $p1['a'];}; f(2)['a']; //Equivalent to: function($p1, $p2) {return $p2['a'];}; f()['a']['b']; //Equivalent to: function($p1) {return $p1['a']['b'];}; f($value, true)['a']; //Equivalent to: function() use ($value) {return $value['a'];}; f($value, true)[f()]; //Equivalent to: function($p1) use ($value) {return $value[$p1];}; //Similarly get property syntax and method call syntax is supported: f()->exampleProperty; //Equivalent to: function($p1) {return $p1->exampleProperty;}; f()->exampleMethod(1); //Equivalent to: function($p1) {return $p1->exampleMethod(1);}; f()->exampleMethod1()->exampleMethod2(); //Equivalent to: function($p1) {return $p1->exampleMethod1()->exampleMethod2();};