2015-05-18 40 views
1

如果我有一个类Foo和功能bar当在PHP中键入一个类时,是否需要包含类文件?

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

使用Foo作为一种提示...我需要包括在内,以含有Foo对于上述编译的文件吗?

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

这种行为是否可靠?它记录在任何地方吗?

作为一个方面说明,我知道这可能是很好的文档,包括Foo.php文件时,我使用Foo作为一种提示,但是它确实防止require_once打电话,如果我没有包括它。

+0

这就是为什么很多人使用自动加载机 –

回答

1

这不是一个权威的回应。

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

的情况下物体Foo有效实例(您想使用它),你将需要已经的Foo定义否则你不能让一个实例。

因此,似乎参数检查不需要Foo的定义。

4

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

+0

[快速和肮脏的测试](http://3v4l.org/LCaZ5) –

相关问题