Dan*_*ugg 4 php closures types anonymous-function
引用PHP:
目前使用Closure类实现匿名函数.这是一个实现细节,不应该依赖.
现在,那说,以下检查被认为是不可靠的:
function myFunction(Closure $callback){}
if(!($callback instanceof Closure)){}
Run Code Online (Sandbox Code Playgroud)
这让我们使用is_callable().这很好,但如果一个人需要一个真正的" 封闭 ",(作为一个论点,或者说是什么),那么is_callable()就不够严格了.以下当然转储bool(true)每个:
function myFunction(){}
class MyClass{
public function __invoke(){}
}
var_dump(is_callable('myFunction'));
var_dump(is_callable(new MyClass));
Run Code Online (Sandbox Code Playgroud)
怎么样,而不依赖于Closure类(给出的是实际上是不可靠的)可以在一个严格确定一个" 封闭 "?
在我看来,我正朝着糟糕的设计方向前进.然而,尽管这个问题得到了回答,但我认为如果有人能够提出所提问题的答案,如果不是纯粹为了它的学术要素,我将不胜感激.
自PHP 5.4发布以来(前一段时间),该Closure类型不再是"实现细节",可以依赖.function f(Closure $g) { }一切都很好.
似乎PHP开发人员改变了他们关于Closure类作为实现细节的想法:
在PHP 5.3中实现的匿名函数产生这种类型的对象.这个事实过去被认为是一个实现细节,但现在可以依赖它.
见http://php.net/manual/en/class.closure.php
因此,您现在应该考虑您的检查是否可靠:
function myFunction(Closure $callback){}
if(!($callback instanceof Closure)){}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3239 次 |
| 最近记录: |