我需要在静态PHP类中实现方括号(数组运算符)。PHP静态类Array []运算符?
的主要目标是让调用类这样的结尾:
MyStaticClass[ $something ] = $somethingElse ;
$SomeVar = MyStaticClass[ $something ] ;
我知道这是一个异端,但我真的需要它...
任何想法?
我想知道是否可以静态调用这样的操作符,因为我在网上找不到任何东西。
感谢您的帮助:)
我需要在静态PHP类中实现方括号(数组运算符)。PHP静态类Array []运算符?
的主要目标是让调用类这样的结尾:
MyStaticClass[ $something ] = $somethingElse ;
$SomeVar = MyStaticClass[ $something ] ;
我知道这是一个异端,但我真的需要它...
任何想法?
我想知道是否可以静态调用这样的操作符,因为我在网上找不到任何东西。
感谢您的帮助:)
[]
不能被重载唯一的变量和方法
样例类
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"]);
我不认为你需要超载的运营商。
如果我理解你的问题,你想能够访问和修改MyStaticClass中的字段?
那么做到这一点:
MyStaticClass::$something = $somethingElse ;
$SomeVar = MyStaticClass::$something ;
只要确保你的静态属性被设置为公共类定义。
PHP真的不支持操作符重载等C++的作用:
我想访问一个数组,而不是一个字段(我知道stdClass属性实际上是一个数组)。爸爸的回答完美地满足了我,因为我可以从ArrayObject接口派生内部静态属性,并使其执行额外的操作。感谢您的发布。 – Benj
'[]'运算符不能在PHP中重载,但是可以使用圆括号和['__call()'](http://php.net/manual/en/language.oop5.overloading.php# object.call)。 – Bojangles
好的,但是如何扩展Array? - > http://stackoverflow.com/questions/787692/operator-overloading-in-php – Benj