【发布时间】:2010-12-05 14:00:57
【问题描述】:
我是否遗漏了什么,或者 PHP 5.x 中确实不支持泛型对象类型提示?
我觉得很奇怪,提示数组受支持而提示对象不支持,至少不是开箱即用。
我想要这样的东西:
function foo(object $o)
就像我们一样:
function foo(array $o)
可能的使用示例:对象集合类的方法。
解决方法:使用由所有类实现的接口“Object”或从通用类“Object”扩展所有类并编写如下内容:
function foo(Object $o)
嗯,那不可爱。
使用stdClass 作为类型提示不起作用:
可捕获的致命错误:参数 1 传递给 c::add() 必须是一个实例 stdClass 的实例,给定的 b 实例
【问题讨论】:
-
不要使用具体类型进行类型提示。要么使用接口,要么阅读鸭子类型。
-
如果我要走没有具体类型的道路,我宁愿使用 is_object()。但这不是本次讨论的重点。
-
看,PHP 是一种非常不一致的语言,其中的对象不像 Java 那样从单个类继承。一般对象没有类型提示的事实确实是一个疏忽,但我认为你必须通过这一点并为其他奇怪的事情做好准备。
-
数组提示如何比 is_array() 更好?由于支持数组提示,我希望对象也是如此。
-
@IonuțG.Stan
is_array在每个函数中检查和抛出异常比设置全局异常处理程序更容易吗?你一定是在开玩笑吧。