【问题标题】:When type hinting a class in PHP, do you need to include the class file?在 PHP 中键入提示类时,是否需要包含类文件?
【发布时间】:2015-07-30 05:11:31
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 这就是很多人使用自动装载机的原因

标签: php type-hinting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这不是权威回复。

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-06-28
      • 2015-01-12
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多