0

我一直在使用 PHP 创建一个脚本,目前似乎遇到了困难。我试图从一个类中的另一个文件中调用一个变量,所以我通过在原始文件中包含该文件然后实例化该类来调用该变量来解决这个问题。但整个事情都在递归函数中,我得到致命错误:无法重新声明类 JVersion。我在下面粘贴了部分代码:

... 
function functionname($path)
{
...
define('_JEXEC', true);
require_once ($path ."libraries/cms/version/version.php");
$test_class = new JVersion();
$jma_ver    = $test_class->getShortVersion();
...
functionname($path);
...
}

这就是 version.php 中的代码部分的样子

defined('_JEXEC') or die;
final class JVersion
{
public $RELEASE = '2.5';
public $DEV_LEVEL = '1';
public function getShortVersion()
{
return $this->RELEASE.'.'.$this->DEV_LEVEL;
}

有没有办法可以克服“致命错误:无法重新声明 JVersion 类”错误?

4

1 回答 1

0

如果我正确理解了这个问题(即你有许多JVersion需要使用的类命名),那么如果不以某种方式命名你的类,我不确定解决这个问题的任何JVersion方法。要么给它们不同的名字,要么把它们放在不同的 PHP 命名空间中。

这听起来更像是一个架构问题,真的。您正在使用的代码似乎没有提供一种以一次性方式获取其版本的方法(无需为此类冲突做好准备)。理想情况下,您应该只有一个JVersion可以用适当的版本号实例化的全局类;这样就不会有类名冲突。

于 2012-02-23T07:10:18.687 回答