Как я могу определить массив внутри области класса PHP в PHP4

Мне нужно определить константный массив в рамках класса, который будет использоваться статически (т. е. я не создаю экземпляр класса). Вот пример кода, который работает в PHP5, но не в PHP4:

class MyTest {
    static $arr = array(100, 200);
    function test() {
        print_r(MyTest::$arr);
    }
}

MyTest::test();

Как изменить этот код, чтобы он работал в PHP4 (4.4.9-pl0-gentoo)?

Примечания:

  • Он должен работать в PHP4.
  • Мне нужно получить доступ к массиву предпочтительно статическим способом, не создавая экземпляр. Но это требование можно было бы снять.
  • Я не могу использовать GLOBALS, так как код должен работать в рамках phpunit модульного тестирования. При этом массив, определенный как GLOBAL в заголовке файла, не отображается в модульном тесте.
  • Я хочу определить массив (содержащий постоянные значения) вне используемой функции. Но если нет другой возможности решить мой вопрос, это требование также может быть снято.

person Alex    schedule 28.08.2013    source источник
comment
Любая специальная версия PHP4?   -  person Daryl Gill    schedule 28.08.2013
comment
Если вы имеете в виду phpunit (т.е. модульные тесты) - зачем вообще использовать static? Это усложняет тестирование.   -  person Alma Do    schedule 28.08.2013
comment
PHP4? Действительно?? Что за безумие привело вас к необходимости выполнить это требование в 2013 году? Надеюсь, вы много берете с них за это.   -  person Spudley    schedule 28.08.2013
comment
@Spudley: я знаю, что это безумие. Еще хуже: код смешивает код PHP4 и PHP5! Но, к сожалению, это не мое решение...   -  person Alex    schedule 28.08.2013
comment
Если это на общедоступном веб-сервере, то тот, кто принимает решение, должен получить быстрый удар с помощью пресловутой ключевой летучей мыши. Последствия использования PHP4 для безопасности в наши дни пугают. Я бы даже сказал, что это преднамеренная небрежность.   -  person Spudley    schedule 28.08.2013


Ответы (1)


class MyTest {
    public function getArray() {
        return array(100, 200);
    }
}

Некрасиво, но вы можете просто вызвать MyTest::getArray() без создания экземпляра (или $this->getArray() внутри класса) для получения данных.

person Lasar    schedule 28.08.2013