我可以看到PHP 5.3.2有一個ArrayObject類。是否可以聲明一個名爲ArrayPHP數組,我可以定義我自己的Array類嗎?
的新對象,該對象擴展了ArrayObject。但是我不知道「陣列」是保留關鍵字,或者我應該用我自己的前綴即XArray(),MYARRAY等等
我想吃點什麼是
class Array extends ArrayObject {
...my own code
}
我可以看到PHP 5.3.2有一個ArrayObject類。是否可以聲明一個名爲ArrayPHP數組,我可以定義我自己的Array類嗎?
的新對象,該對象擴展了ArrayObject。但是我不知道「陣列」是保留關鍵字,或者我應該用我自己的前綴即XArray(),MYARRAY等等
我想吃點什麼是
class Array extends ArrayObject {
...my own code
}
所有你所要做的就是嘗試運行:
<?php class Array {}
而且你會看到:
Parse error: syntax error, unexpected 'Array'
所以答案是,不,你不能。您需要使用不同的名稱。
如果它現在有效,它可能會發生,他們確實在將來創建Array
類。最好是遠離那些明顯符合語言定義的邏輯的名稱。
編輯:正如馬修指出的,它不起作用。看到他的回答讓我意識到爲什麼它不起作用:array
是一個關鍵字在PHP(允許你做一個數組文字)和關鍵字在php中不區分大小寫。
我認爲,在PHP中,並不總是很明顯什麼是「邏輯的語言」... – 2012-02-05 01:22:21
是的如此真實,我試圖找到是否有一個名爲Array的類,但找不到它。不知道爲什麼類Array()不起作用? – IEnumerable 2012-02-05 01:23:38
@KerrekSB絕對不總是。在這種情況下,我會說這很明顯。 – Jasper 2012-02-05 01:23:51
林不知道如果「陣」是一個保留關鍵字
這很容易檢查。 PHP's list of reserved keywords有「陣列()」列在前面和中心。
該頁面還列出了以下指導意見:
不能使用任何一個作爲常量,類名,函數或方法的名稱。將它們用作變量名通常是可以的,但可能會導致混淆。
所以不,你不能。您需要將您的類重命名爲其他名稱,因爲PHP類名不區分大小寫,所以您的名稱不能僅由letter-casing來區分。
我知道關鍵字不區分大小寫(因此在這裏創建一個問題),但類名不區分大小寫? – Jasper 2012-02-05 01:34:50
@Jasper這是正確的。有一個[更改請求](https://bugs.php.net/bug.php?id=26575&edit=1)詢問區分大小寫的類名,它的狀態是「不會修復」。另見http://stackoverflow.com/questions/5260168/capital-letters-in-class-name-php – Farray 2012-02-05 01:37:55
我明白了。謝謝,這是goog學習新東西。 – Jasper 2012-02-05 01:40:40
請參閱:http://www.php.net/manual/en/reserved.keywords.php – Matthew 2012-02-05 01:22:18