我需要在靜態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