Создание класса внутри рекурсивной функции в PHP - PullRequest
0 голосов
/ 23 февраля 2012

Я создавал скрипт с использованием 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»?

1 Ответ

0 голосов
/ 23 февраля 2012

Если я правильно понимаю проблему (т. Е. У вас есть много классов с именем JVersion, которые вам нужно использовать), то я не уверен, что смогу обойти эту проблему, если в некотором роде не будет пробелов ваших классов JVersion. Либо дайте им разные имена, либо поместите их в разные пространства имен PHP.

Это больше похоже на архитектурную проблему; код, который вы используете, похоже, не дает возможности получить свою версию одноразовым способом (не настраивая себя на подобные конфликты). В идеале у вас должен быть просто глобальный класс JVersion, который можно удалить с помощью соответствующих номеров версий; таким образом, не будет конфликтов имен классов.

...