Ren*_*och 18 php closures phpdoc
我无法在PHPDoc中找到关于Closure类型的任何文档.所以我的问题是如何定义发送到闭包的参数的参数及其返回值?
例:
我如何描述"回调"将获得"MyCustomClass",数字和字符串,并返回"MyOtherCustomClass"?
/**
* @param MyCustomClass $cls
* @param Closure $callback this isn't really explaining what this is
*
* @return MyOtherCustomClass
*/
function changer($cls, $callback){
return $callback($cls, 2, "a string");
}
changer($aCustomeClass, function($cls, $int, $string){
return new MyOtherCustomClass($cls, $int, $string);
})
Run Code Online (Sandbox Code Playgroud)
或者如果它可能的话?
ash*_*azg 15
@param callable $callback确实是用于该部分的语法.您不是将该参数限制为闭包本身...在该实现中将接受传递给它的任何可调用对象.Callable是一种合法的"PHP类型",因此phpDocumentor将其视为有效的Type.
在您的示例代码中,实际上没有理由假设您的changer()方法返回a MyOtherCustomClass(),因为这完全取决于您在changer()使用中稍后编写闭包的方式.在最好的情况,你会在评论表示,在该changer()使用情况这一特定用途的changer()回报MyOtherCustomClass,因为它是使用的实现,而不是changer()实现本身,该函数返回一个特定类型的对象.
至于记录传递的callable被"必需"接受的参数,我想你必须在param标签的描述部分中这样做.没有语法来描述这种情况.
如果我以这种方式实现某些东西,我会强加一个接口,callables必须全部显式返回,因此我可以编写changer()返回该接口.当然,这意味着您MyOtherCustomClass必须实现该接口,但在我看来,这似乎是接近"强制执行"返回类型的唯一方法changer().
| 归档时间: |
|
| 查看次数: |
3722 次 |
| 最近记录: |