当在PHP中类型提示类时,是否需要包含类文件?

时间:2015-05-18 15:46:12

标签: php type-hinting

如果我有课程Foo和函数bar

function bar (Foo $x) { baz($x); }

使用Foo作为类型提示...我是否需要包含包含Foo的文件才能编译上述内容?

在PHP 5.4.33的测试中,即使调用该函数,也不需要包括该类。该函数失败,因为提供的$x不是类型Foo,但没有错误,例如"错误:Foo未定义"发生。

这种行为是否可靠?是否记录在哪里?

作为旁注,我知道当我使用Foo.php作为类型提示时,文档包含Foo文件可能会有好处,但它确实阻止了对require_once如果我不必包含它。{/ p>

2 个答案:

答案 0 :(得分:4)

所有PHP都检查该类型的名称。它没有将它与任何具体实现联系起来。因此,不要求以任何方式访问该类型的具体实施;这意味着您不需要include定义类型的文件。

答案 1 :(得分:1)

这不是权威回应。

我可以想象PHP对象内部有一个存储类名的字段。这可以用于参数检查。

如果对象 Foo的有效实例(并且您想要使用它),那么您将需要Foo的定义,否则您可以'做一个实例。

所以看起来参数检查不需要Foo的定义。