【问题标题】:So how do I make a class name global in PHP?那么如何在 PHP 中使类名全局化呢?
【发布时间】:2012-01-26 17:32:03
【问题描述】:

我有一个名为“user”的类,带有一个函数“createAccount”。在其中我喜欢通过 PostageApp::mail 访问另一个类

但由于此类超出范围,因此无法访问。 global 接缝仅适用于变量。那么如何让类名全局化呢?

include_once('../../ext_scripts/postageapp_class.inc');

class user {
  function createAccount(...) {
    global PostageApp;

    [...]

    $result = PostageApp::mail($mailTo, '', 'verify_email', array());
  }
}

【问题讨论】:

  • 类标识符默认是全局的。除非你们两个中的一个生活在命名空间中。
  • 谢谢,我刚刚发现,包含路径错误。这就是 PostageApp 不为人知的原因。
  • 我建议您使用require 而不是include 强制源文件。

标签: php class scope


【解决方案1】:

必须在使用之前定义类,因此您必须使用 requirerequire_once 将文件包含在您的 PostageApp 类定义中。

类没有全局的概念。

如果您不想添加require,我建议您查看autoloading

【讨论】:

    【解决方案2】:

    如果您绝对确定该类已在包含文件中定义,那么只有一件事会影响其在另一个文件中的可见性:我想 PostageApp 类在另一个 namespace 中,因为这是唯一的另一个类在 PHP 中可能具有不同范围的原因。

    关键字global 仅对全局变量是必需的。函数和类一经声明就始终可以在任何范围内访问。

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      相关资源
      最近更新 更多