私はこのようなクラスを持っています:
class someClass {
public static function getBy($method,$value) {
// returns collection of objects of this class based on search criteria
$return_array = array();
$sql = // get some data "WHERE `$method` = '$value'
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)) {
$new_obj = new $this($a,$b);
$return_array[] = $new_obj;
}
return $return_array;
}
}
私の質問は、上記のように$ thisを使用できますか?
それ以外の:
$new_obj = new $this($a,$b);
私は書くことができます:
$new_obj = new someClass($a,$b);
しかし、クラスを拡張するときは、メソッドをオーバーライドする必要があります。最初のオプションが機能する場合、私はそうする必要はありません。
ソリューションの更新:
これらは両方とも基本クラスで機能します。
1.)
$new_obj = new static($a,$b);
2.)
$this_class = get_class();
$new_obj = new $this_class($a,$b);
私はまだ子供クラスでそれらを試していませんが、#2はそこで失敗すると思います。
また、これは機能しません:
$new_obj = new get_class()($a,$b);
その結果、解析エラーが発生します。予期しない'('上記の2.)のように、2つのステップで実行する必要があります。さらに、1。のように実行する必要があります。