[解決済み] パースエラー:構文エラー、予期しない 'new' (T_NEW) in .../test6_2.php on line 20
2022-03-01 07:47:41
質問
からのソースを保存して修正しようとしているだけです。 PHPBench.com
というエラーにヒットしました(サイトはダウンしており、作者は質問に回答していません)。これがソースです。
<?php
// Initial Configuration
class SomeClass {
function f() {
}
}
$i = 0; //fix for Notice: Undefined variable i error
// Test Source
function Test6_2() {
//global $aHash; //we don't need that in this test
global $i; //fix for Notice: Undefined variable i error
/* The Test */
$t = microtime(true);
while($i < 1000) {
$obj =& new SomeClass();
++$i;
}
usleep(100); //sleep or you'll return 0 microseconds at every run!!!
return (microtime(true) - $t);
}
?>
これは有効な構文なのでしょうか?間違っていたら訂正してほしいのですが、SomeClassへの参照を作成し、その参照から
new $obj()
... よろしくお願いします。
解決方法を教えてください。
オブジェクトはとにかく常に参照で保存されます。そのため
=&
とCharlotteがコメントしているように、非推奨の構文です。
間違っていたら訂正しますが、SomeClassへの参照を作成し、new $obj() を呼び出せるようにしていると思います。
いいえ、これは正しくありません。その
new
演算子は常にクラスのインスタンスを作成し、クラスを型として参照することはできません。
変数オブジェクトのインスタンスを作成するには、単純に 文字列 という変数にクラス名を入れて、それを使っています。
$class = "MyClass";
$obj = new $class();
のような関数は get_class() または ReflectionClass::getName() は、クラス名を文字列で返します。PHP には、Java のような "クラスへの参照" という概念はありません。
あなたが考えているものに一番近いのは
ReflectionClass::newInstance()
しかし、これはオブジェクトを動的に生成するための不要な方法です。ほとんどすべての場合において、単に
new $class()
.
関連
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] PHP の文字列を改行で展開する
-
[解決済み] パースエラーです。構文エラー、私のPHPコードで予期しないファイルの終わり
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPで「Header already sent」エラーを修正する方法
-
[解決済み] PHPで配列の任意の位置に新しい項目を挿入する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。