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()
を呼び出すことができます...助けてくれてありがとう
とにかく、オブジェクトは常に参照によって保存されます。あなたは_=&
_を必要とせず、シャーロットがコメントしたように、それは非推奨の構文です。
私が間違っているが、それがSomeClassへの参照を作成すると思うなら、私を修正してください、それでnew $ obj()を呼び出すことができます。
いいえ、これは正しくありません。 new
演算子は、クラスの型としての参照ではなく、常にクラスのインスタンスを作成します。
クラスの名前でstring変数を作成し、それを使用するだけで、変数オブジェクトのインスタンス化を作成できます。
_$class = "MyClass";
$obj = new $class();
_
get_class() または ReflectionClass :: getName() などの関数は、クラス名を文字列として返します。 JavaにあるようなPHPには「クラスへの参照」という概念はありません。
あなたが考えている最も近いものは ReflectionClass :: newInstance() ですが、これはオブジェクトを動的に作成する不必要な方法です。ほとんどの場合、new $class()
を使用することをお勧めします。