use*_*758 4 php oop class object
我有闲置情况
class A {
...
public static function Copy($obj) {
$newObj = new (class of $obj);
...
}
}
class B extends A {
...
}
class C extends A {
...
}
...
$newB = B::Copy($BObject);
$newC = C::Copy($CObject);
Run Code Online (Sandbox Code Playgroud)
我可以创建参数类的新对象,还是必须为每个继承的类重写方法?
也许可以简化它,但这get_class()是要走的路:
$class = get_class($obj);
$newObj = new $class;
Run Code Online (Sandbox Code Playgroud)
我找不到 PHP 5.x 或 7.x 的单行代码,但这似乎适用于 PHP 8.0:
$newObj = new (get_class($obj));
Run Code Online (Sandbox Code Playgroud)