0

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

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

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

我知道这是异端邪说,但我真的需要它……

任何的想法 ?

我想知道是否可以对这样的操作员进行静态调用,因为我在网上一无所获。

感谢您的每一个帮助:)

4

2 回答 2

1

我认为您不需要重载运算符。

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

然后这样做:

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

只需确保您的静态属性在类定义中设置为公共。

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

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

是否可以在 PHP 中重载运算符?

于 2012-09-27T08:27:17.443 回答
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"]);
于 2012-09-27T08:27:39.890 回答