我們的臨時服務器正在生成語法錯誤,並且我想知道,如果我們的分期預服務器已經讓我們的開發團隊擺脫不正確的語法。靜態公共類成員PHP臨時服務器上
下面是導致 '語法錯誤' 的代碼:
// GLOBALS.PHP
<?php
session_start();
class ItemsFromBronzeAge {
static public $ITEMNAMELABEL = "ItemName";
}
class Labels {
static public $USER_PROMPT_ITEMNAME = "Item name here....";
}
?>
我們包括上述globals.php進入第二個文件 - 名爲index.php的 - 這樣的:
// INSIDE OF INDEX.PHP
<?php
require_once 'globals.php'; // variables and statics used throughout
// the next line is line #12 in the 'Parse error' message below
$_SESSION[ItemsFromBronzeAge::$ITEMNAMELABEL] = Labels::$USER_PROMPT_ITEMNAME;
?>
而這裏的分析錯誤,當我們我們1and1.com臨時服務器上運行的index.php:
" Parse error: syntax error, unexpected ']',
expecting '(' in index.php on line 12"
只是爲了推動這個家,我們CH在index.php來這個代碼和1and1.com臨時服務器anged線#12不再報告「解析錯誤」:
// WE CHANGED FROM THIS:
$_SESSION[ItemsFromBronzeAge::$ITEMNAMELABEL] = Labels::$USER_PROMPT_ITEMNAME;
// TO THIS AND THE 'PARSE ERROR' GOES AWAY -- THIS CODE WORKS ON THE STAGING SERVER:
$_SESSION["ItemName"] = "Item name here....";
沒有辦法我們的團隊是通過我們的所有的源代碼回去,放棄使用數組索引的常量並將字符串文字用作數組索引。
我的問題是 - 有我們的分期預開發服務器已經讓我們擺脫不正確的語法上面,還是1and1.com有某種PHP的設置失衡了,還是......?
我的意思是使用公共靜態類成員作爲數組索引的 - 是家常便飯。
看不到任何語法錯誤,我的本地測試正常工作。你可能應該使用類常量而不是靜態公共屬性,例如'const ITEMNAMELABEL =「ItemName」;'。哪些版本的PHP正在使用? – Phil 2012-03-14 06:27:15
我認爲這是因爲「靜態公共」應該是公共靜態$ var =「Something」; – 2012-03-14 06:27:36
@菲爾,那是我們願意做的100%改變,謝謝,1and1還沒有回到我們身邊,等待對開發工作根本不利。 Sheikh,我會在1and1.com上的暫存服務器上運行一個簡短的測試用例,看看是否將從「靜態公共」到「公共靜態」建議的順序顛倒過來 - 對於我們所知道的,我們的預先準備服務器只是讓我們擺脫'靜態公共$ var =「theText」 - 我會回來後測試它 - 謝謝! – wantTheBest 2012-03-14 06:32:23