msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

10 Oct 11 函数类型提示(Callable typehint)

在PHP5.4的开发过程中, 有不少对typehint的提议, 我们也讨论过很多次, 完全加入对基本类型的typehint会引起很大的变动, 并且就我自己来看, 不利于PHP的灵活性.

不过, 对于callable类型的支持, 我还是支持的.

在以前, 我们如果希望一个函数接受一个回调函数作为参数, 那需要做很多额外的工作来检查是否是可调用的, 正确的回调函数.

而现在, 这个将会变得很简单, Zend Engine提供了一个新的typehint, 来帮助你完成这些检查工作:

<?php
   function foo(callable $callback) {
   }

对于下面的例子:

<?php
foo("false"); //Catchable fatal error:  Argument 1 passed to foo() must be callable *
foo("printf"); //okey
foo(function(){}); //okey

class A {
    static function show() {
    }
}

foo(array("A", "show")); //okey

是不是方便了很多呢?

另外, 对于扩展开发来说, zend_parse_parameters也提供了对应的新标志:”f”, 可以参看Zend Parameters Parser新增类型描述符介绍

不过还是要提醒下, PHP 5.4还处于开发阶段, 在最终release之前, 任何新特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.

更多更新信息, 请关注: Changelog


分享到:



Related Posts:

Tags: , ,

6 Responses to “函数类型提示(Callable typehint)”

  1. chrisyue |

    不知道为什么会觉得加了基本类型的typehint会不利于php的灵活性。

    如果php支持基本类型的typehint,就可以少好多类似

    if (is_int($foo)) {
    throw new ParamException(…);
    // or trigger_error(…);
    }

    这样的代码了不是吗

  2. Anonymous |

    听说 到新浪微博了?

  3. xiatian |

    喜欢各种回调风格

  4. xiatian |

    喜欢各种回调风格

  5. istrone |

    和js挺像了!

  6. vt |

    如果能直接用

    foo(“A->show”); //okey

    就更好了 :)

Leave a Reply

*