PHP,封闭类
回答
它指的是calling magic。
据我所知,对于任何包含方法__invoke
的类,它的实例可以被调用,就像它是一个函数一样。 Closure::__invoke
的行为就像那样。
即当$foo
是Closure
类(匿名函数),称$foo($bar)
将调用$foo->__invoke(bar)
(虽然__invoke
成员并不意味着直接调用,这只是为了显示它是如何工作)。
当你定义匿名函数,你这样做:现在
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
,$greet
是Closure
类的。 $greet->__invoke
等于function($name){ printf("Hello %s\r\n", $name); }
并且记住,Closure::__invoke
是。
谢谢Alvin Wong为你解释有关__invoke魔法的解释我现在也知道另一种魔法,我可以在OOP中使用魔法,所以谢谢你,祝你有美好的一天。 – 2012-07-21 13:08:53
我觉得bind
和bindTo
之间的区别仅仅是在他们的调用方式:
$cl->bindTo($obj)
相当于
Closure::bind($cl, $obj)
关于__invoke
meethod,它说,该方法存在,但它并未实际使用。当您将闭包作为函数使用时,会使用绕过该方法的内部(可能更高效)的机制。但该方法与其他可调用类兼容,如果需要,可以手动调用它。
谢谢巴尔马可以请你多展开一下关于bind和bindTo因为我不知道如果我能够比较bindTo并且绑定到一个代码,我是否有这个权利。 – 2012-07-21 13:06:51
as [this](http://www.php.net/manual/en/closure.bind.php)指出'此方法是Closure :: bindTo()的静态版本'' – 2012-07-21 13:40:51
查看示例文档。我不认为我能做得比这更好。它们只是编写完全相同的两种不同的方式 - bindTo是面向对象的,而bind是传统的函数风格。 – Barmar 2012-07-23 06:55:57
- 1. 不是封闭类
- 2. 封闭类的C#类型
- 3. 封闭类vs申报类
- 4. PHP fputcsv和封闭领域
- 5. Android - 不是封闭类
- 6. 错误:不是封闭类
- 7. 未封闭字符类
- 8. 封闭实例无效时的封闭类型行为
- 9. PHP封闭中的变量为空
- 10. 插入与PHP/MySQL的封闭表
- 11. 修改封闭
- 12. 封闭性
- 13. 在封闭
- 14. 封闭在Javascript
- 15. 从封闭
- 16. 与封闭
- 17. 封闭范围
- 18. 受约束的封闭类型家族
- 19. 将封闭类添加到Eclipse模板
- 20. 原因封闭括号类型的投
- 21. 隐式引用Java中的封闭类
- 22. 如何进入封闭泛型类
- 23. “Scala是不是一个封闭类”
- 24. 如何在PHP中关闭封闭外的数组?
- 25. 错误在封闭
- 26. 计划 - 在封闭
- 27. AS3封闭混乱
- 28. 封闭缺失者
- 29. 如何在封闭
- 30. CFG和封闭性
谢谢大家,我正在阅读答案。 – 2012-07-21 12:58:12