晚上剛剛更新了php5.4.0,環境是Windows7 + Apache2.2 + MySQL5.1 + PHP5.4.0,php.ini沒有重新更新,仍然採用之前的版本(php5.2)
如題,有兩個小問題:
1,php5.4.0的命名空間空間問題:
出現:
Fatal error: Namespace declaration statement has to be the very first statement in the script in F:\htdocs\rules.php on line 2
這是啥問題啊???怎樣聲明都沒用。。。。直接copy手冊的代碼也出錯。。。。是php5.4自己的錯誤還是我配置的問題??
2,直接貼代碼吧:
$phpinfo = function (){echo 'hello world!';}phpinfo();$phpinfo();
錯誤碼:Parse error: syntax error, unexpected 'phpinfo' (T_STRING)
我想這不是啥問題,只是想知道它是為啥這樣.如果直接重寫覆蓋會直接在函聲明處產生一個致命錯誤,可是這裡卻能正常執行,而且直接覆蓋掉了php內建方法(雖然不能正常輸出),這應該不只是在5.4裡面有,相信在其他版本裡同樣會有,是一個Bug嗎??謝謝
另外,能不能給小弟我說說5.4版本的一些特性呢??
很久沒敲php了,都有點生疏了,更別說是瞭解php的新特性了。。。。
再次感謝!
回複討論(解決方案)
還有一個問題。
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'libmcrypt.dll' in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '../PHP/ext\php_iconv.dll' - 中包含無效路徑
in Unknown on line 0
這個怎麼解決?在UE中調用php.exe調試輸出的,但是正常使用沒有問題。。。。很鬱悶的,DOS為什麼會報錯。。。。
(註:我自己配置的移動配置,之前有報錯,把libmcrypt.dll和php_iconv.dll放到/Windows目錄下可用,現在卻又報錯了,鬱悶。。。。)
1.錯誤提示的很清楚了,估計是你的程式存有BOM頭。 2.這是給$phpinfo賦值,所以要在行末加上分號來正確關閉。
3.錯誤提示給你的路徑你看看對不對
第一個應該是bom頭的問題
第二個只是定義了$phpinfo是一個匿名函數,和phpinfo()沒有半毛錢關係,並沒有覆蓋掉phpinfo(),後面加上';' 就正常了
新特性支援以下文法:
//Short array syntax$a=[1,2,3,4,5,6];//Array dereferencingfunction foo(){ return array(1,2,3,4);}echo foo()[1];
還有Buid-in web server和Traits 樓下接著補充
確認問題一:確實是UTF-8的BOM頭問題,已解決:
UE儲存時採用格式為UTF-8 無BOM,搞定!
延伸問題二:後面引號去除可以正確調用,但是為啥引號不添加卻不會報錯??
我也碰到了問題一,不過我的是因為首行寫了 `#! /bin/env php`
語言的變更很難三言兩語講完的,你最好查文檔。
以下是我查的關於php從5.3到5.4的變更
http://www.php.net/manual/zh/migration54.php