在 PHP 中键入 class 时,是否需要包含 class 文件?

When type hinting a class in PHP, do you need to include the class file?

如果我有一个 class Foo 和一个函数 bar

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

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

在 PHP 5.4.33 的测试中,不需要包含 class,即使在调用函数时也是如此。函数失败,因为提供的 $x 不是 Foo 类型,但没有发生 "Error: Foo not defined" 等错误。

这种行为可靠吗?它有任何记录吗?

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

这不是权威的回应。

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

如果对象 Foo 的有效实例(并且您想使用它),您将已经需要 [=10= 的定义] 否则无法创建实例。

所以似乎参数检查不需要Foo的定义。

PHP所做的只是检查类型的名称。它不会 link 它到任何具体的实现。因此,不需要以任何方式访问该类型的具体实现;这意味着您不需要 include 定义类型的文件。