は、私はこのようなクラスを持っている:
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;
}
}
私の質問です:私は上記の持っているように、$これを使用することができますか?
$new_obj = new $this($a,$b);
私は書くことができます:代わりの
$new_obj = new someClass($a,$b);
しかし、その後、私はクラスを拡張するとき、私はメソッドをオーバーライドする必要があります。最初のオプションが機能すれば、私はする必要はありません。ソリューションの
UPDATE:
基底クラスでこれらの作業の両方:
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.)。
コードにセミコロンがありません。 $ return_array [] = $ new_obj; – yehuda