【问题标题】:How can I define an array inside a PHP class scope in PHP4如何在 PHP4 的 PHP 类范围内定义数组
【发布时间】:2013-08-31 15:36:02
【问题描述】:

我需要在一个类的范围内定义一个 constant 数组,该数组将被静态使用(即我没有创建该类的实例)。这是适用于 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 的数组。
  • 我想在正在使用的函数之外定义数组(包含常量值)。但如果没有其他可能性可以解决我的问题,也可以放弃此要求。

【问题讨论】:

  • 任何特殊的 PHP4 版本?
  • 如果您指的是 phpunit(即单元测试) - 为什么要使用 static?它使测试变得更加困难。
  • PHP4?真的??在 2013 年,什么样的精神错乱让你不得不满足这一要求?我希望你为此付出了很多。
  • @Spudley:我知道这很疯狂。更糟糕的是:代码混合了 PHP4 和 PHP5 代码!但不幸的是,这不是我的决定……
  • 如果它在公共网络服务器上,那么任何做出决定的人都需要迅速受到众所周知的线索蝙蝠的打击。这些天运行 PHP4 的安全隐患是可怕的。我什至可以说这是故意疏忽。

标签: php php4


【解决方案1】:
class MyTest {
    public function getArray() {
        return array(100, 200);
    }
}

不漂亮,但您可以简单地调用 MyTest::getArray() 而无需创建实例(或从类内部创建 $this->getArray())来检索数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2013-01-25
    相关资源
    最近更新 更多