【问题标题】:Typehinting traversable objects类型提示可遍历对象
【发布时间】:2013-03-11 05:06:09
【问题描述】:
假设您正在构建一个其他人可以使用的 API。
而且你对函数使用了很多类型提示,比如function foo(array $arg){...}。这会强制参数为数组,因此将可遍历对象传递给此函数将不起作用。但是您的函数可以与此类对象一起使用。
您认为删除提示并处理可遍历对象是个好主意吗?还是我应该把它留给用户? (例如她可以使用iterator_to_array)
【问题讨论】:
标签:
php
arrays
iterator
type-hinting
【解决方案1】:
您可以删除我认为的类型提示并添加 PHPDoc 注释。说它需要一个数组,一个可遍历的甚至是数组访问。
用户在使用您的 API 时给予灵活性还不错,但是在处理不属于适当类型的参数时,您的 API 应该具有容错能力。因此,如果您删除类型提示,您应该将类型控件添加到您的方法中(当然您不必这样做,但它可能被认为是最佳实践)。但是,进行检查会导致您的 API 变慢(这可能是疏忽大意,可能被视为微优化,但如果您的 API 需要快速工作,您也应该考虑这一点)。