【问题标题】:Meaning of "PDOStatement extends \PDOStatement" in Doctrine source code : namespace or class?Doctrine 源代码中“PDOStatement extends \PDOStatement”的含义:命名空间还是类?
【发布时间】:2016-03-11 11:44:32
【问题描述】:

vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php 的第 28 行 如下:

class PDOStatement extends \PDOStatement implements Statement

我不确定应该如何阅读。在 php.net 的文档中,我阅读了很多关于 PDOStatement 的内容,但没有阅读关于 \PDOStatement 的内容。 \PDOStatement 是指定命名空间还是类?黑斜线表示命名空间,但 extends 关键字需要一个类。这里的反斜杠有什么意义?

【问题讨论】:

    标签: php symfony doctrine-orm namespaces


    【解决方案1】:

    反斜杠指的是全局命名空间,所以 \PDOStatement 指的是 php.net 引用的那个。行首的“PDOStatement”是在当前命名空间下定义的一个新类,我想你在这个文件的顶部有类似namespace MyNamespace; 的东西。这个新类将继承全局类的所有方法。

    【讨论】:

    • 文件顶部确实有一个namespace Doctrine\DBAL\Driver;。所以\PDOStatementDoctrine\DBAL\Driver\PDOStatement 的简写?
    • 不完全是,这里的 PDOStatement 是 Doctrine\DBAL\Driver\PDOStatement 的简写。 \PDOStatement 是由 PDO 扩展定义的全局类。反斜杠只是在命名空间内引用全局类的一种方式。通常,如果不在命名空间文件中,您不会看到此内容。
    • 我想我现在看到了:\PDOStatement 中的反斜杠是用来告诉系统该类来自全局命名空间而不是其他任何地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2011-11-11
    • 2014-01-05
    相关资源
    最近更新 更多