PHP静态类Array []运算符?

时间:2012-09-27 08:25:07

标签: php class static overloading operator-keyword

我需要在静态PHP类中实现方括号(数组运算符)。

主要目标是在最后进行类调用:

MyStaticClass[ $something ] = $somethingElse ;
$SomeVar = MyStaticClass[ $something ] ;

我知道这是一种异端,但我确实需要它......

有什么想法吗?

我想知道是否可以静态调用这样的运算符,因为我在网上找不到任何内容。

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

我认为你不需要重载操作符。

如果我理解您的问题,您希望能够访问和修改MyStaticClass中的字段吗?

然后这样做:

MyStaticClass::$something = $somethingElse ;
$SomeVar = MyStaticClass::$something ;

只需确保在类定义中将静态属性设置为public。

PHP并不像C ++那样真正支持运算符重载:

http://www.php.net/manual/en/language.oop5.overloading.php

Is it possible to overload operators in PHP?

答案 1 :(得分:1)

[]不能只重载变量和方法

样本类

class MyStaticClass
{
    static public $somthing = array("somthingElse"=>"Hello Benj") ;
}

直接致电

var_dump(MyStaticClass::$somthing["somthingElse"]);

您也可以使用

$MyStaticClass = MyStaticClass::$somthing ;
var_dump($MyStaticClass["somthingElse"]);

两者都会输出

string 'Hello Benj' (length=10)

在PHP 5.4中

function MyStaticClass()
{
    return MyStaticClass::$somthing ;
}

var_dump(MyStaticClass()["somthingElse"]);