php5.4.0 のいくつかの小さな問題
今夜 php5.4.0 をアップデートしたところです。環境は Windows7 + Apache2.2 + MySQL5.1 + PHP5.4.0 で、以前のバージョン (php5.2) は更新されていません。
タイトルにあるように、2 つの小さな問題があります:
1. php5.4.0 の名前空間の問題:
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><?php
namespace Foo;
class test{
/*hello php 5.4.0*/
}
?>
が表示されます:
致命的なエラー: 名前空間宣言ステートメントは、F:htdocsrules.php のスクリプトの 2 行目の最初のステートメントである必要があります
何が問題ですか? ? ?どんなに宣言しても無駄です。 。 。 。マニュアルからコードを直接コピーしてもエラーが発生します。 。 。 。 php5.4自体のエラーなのか、それとも私の設定に問題があるのでしょうか? ?
2. コードを直接投稿します:
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->$phpinfo = function (){
echo 'hello world!';
}
phpinfo();
$phpinfo();
エラー コード: 解析エラー: 構文エラー、予期しない 'phpinfo' (T_STRING)
これは問題ないと思いますが、なぜこのようになるのか知りたいのですが、直接オーバーライドすると関数宣言の時点で致命的なエラーが発生しますが、ここでは正常に実行でき、PHPも同様です。組み込みメソッドが直接上書きされる(正常に出力できないが)のですが、これは5.4にだけあるはずではなく、他のバージョンにも存在すると思いますが、バグでしょうか? ?ありがとうございます
また、バージョン5.4の特徴をいくつか教えていただけますか? ?
私は長い間 PHP を触っていなかったので、PHP の新機能を理解するどころか、少し慣れています。 。 。 。
またよろしくお願いします!
-----解決策---------
1. エラー メッセージは非常に明確です。プログラムに BOM ヘッダーがある可能性があります。 2 の前にスペースを含むものは存在できません。これは $phpinfo に値を代入しているため、行を正しく閉じるには行の末尾にセミコロンを追加する必要があります。
3. エラー メッセージで指定されたパスが正しいかどうかを確認します。
------解決策------------------
1 つ目は bom の問題であるはずです
2 つ目は $phpinfo を匿名関数として定義するだけで、phpinfo() とは何の関係もなく、その後に ';' を追加するだけで問題ありません。
新機能は次の構文をサポートします:
PHP コード
//短い配列構文
$a=[1,2,3,4,5,6];
//配列の逆参照
関数 foo(){
配列(1,2,3,4)を返します;
}
エコー foo()[1];