在PHP5中引入了static
關鍵字,這使得人們得出PHP4不支持靜態方法或變量的結論。然而,當我在PHP 4.4.9上運行下面的代碼時,它在沒有被調用的構造函數的情況下工作。PHP4和靜態方法/回調函數
<?php
class a {
function a() {
echo "CONSTRUCTOR CALLED\r\n";
}
function b($var) {
return $var . 'x';
}
}
print_r(array_map(array('a', 'b'), array('a', 'b')));
可以玩弄這個PHP代碼 「不甘示弱」:
http://sandbox.onlinephpfunctions.com/code/1d6882a8264620a0165d7345791f8680586a869e
任何想法,這是怎麼工作的?
收拾,進一步這些代碼中有什麼與靜態函數有關?這只是一個簡單的類回調 –
@MarkBaker這是一個奇怪的例子,但作爲回調的'array('a','b')'代表'a :: b',即一個靜態函數調用。 – IMSoP
它調用類方法,但PHP4 OOP工作時不需要靜態關鍵字,因爲無論如何都可以靜態或動態地調用方法,並且由於b()不包含實例引用,所以不會有錯誤......它只是後續版本收緊規則 –