【发布时间】:2010-09-13 08:00:21
【问题描述】:
众所周知,PHP 的类型非常松散。该语言不要求您为函数参数或类变量指定任何类型的类型。这可能是一个强大的功能。
但有时,它会使调试脚本成为一种痛苦的体验。例如,将一种对象传递给需要另一种对象的方法会产生错误消息,抱怨传递的对象不存在某个变量/方法。这些情况大多是烦恼。更繁重的问题是当您使用错误类的对象初始化一个对象时,并且直到稍后在脚本执行中才会使用“错误对象”。在这种情况下,您最终得到的错误比传递原始参数时要晚得多。
与其抱怨我传递的内容没有特定的方法或变量,或者等到脚本执行的很久以后才能使用我传递的对象,我宁愿有一个错误消息,在我指定错误类型的对象的确切位置,抱怨对象的类型不正确或不兼容。
您如何在代码中处理这些情况?你如何检测不兼容的类型?如何在我的脚本中引入一些类型检查,以便获得更容易理解的错误消息?
另外,在考虑到 PHP 中的继承时,你怎么能做到这一切呢?考虑:
<?php
class InterfaceClass
{
#...
}
class UsesInterfaceClass
{
function SetObject(&$obj)
{
// What do I put here to make sure that $obj either
// is of type InterfaceObject or inherits from it
}
}
?>
然后这段代码的用户使用他们自己的具体类来实现接口:
<?php
class ConcreteClass extends InterfaceClass
{
}
?>
我希望 SetObject 也可以接受 ConcreteClass 实例以及所有未来未知的用户定义对象。在检查正确的类型时,您如何允许这样做?
【问题讨论】:
标签: php oop type-safety