当两个类在PHP中具有相同的名称时,如何引用所需的常量?

时间:2016-05-18 18:32:21

标签: php zend-framework

我正在维护一个旧的 Zend 1.12 应用程序。这个应用程序有两个名为Document(application/models/Document.php)的类,其中一个类包含一组我需要引用的常量。

通常情况下这很好用。但是,在一个帮助器(library/App/Helper/Action/Docusign.php)中,由于某种原因我无法引用不同的Document类(library/Docusign/APIService.php),当然它没有所需的常量。< / p>

如何在引用常量时指定它应该使用哪个类?

$documentType = Document::DOCUMENT_TYPE_OTHER;
  

致命错误:访问未声明的静态属性:Document :: $ DOCUMENT_TYPES in ...

我也试过搞乱各种命名空间,但没有运气。 Zend似乎在幕后做了些事情搞砸了:P

对我有任何建议吗?

2 个答案:

答案 0 :(得分:0)

正如您所说,如果您没有使用任何其他名称空间,请将其粘贴在library/Docusign/APIService.php的最顶部:

<?php
namespace Docusign;

...

然后,在引用该不同的类时,请使用以下代码:

$doc = new \Docusign\Document();
$documentType = Document::DOCUMENT_TYPE_OTHER;

请注意, library/Docusign/APIService.php中的任何对象代码也需要命名空间。所以如果你有这样的一行:

$date = new DateTime();

您需要将其更改为:

$date = new \DateTime();

答案 1 :(得分:0)

没有基于命名空间的解决方案,没有撕毁所有内容并重新执行它以在整个应用程序中正确使用命名空间。

相反,我通过将一个类名更改为Document中的DocumentModel来重构,以便明确强制区分。