创建在 php 中传递对象的同一类的对象

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)

我可以创建参数类的新对象,还是必须为每个继承的类重写方法?

Abr*_*ver 6

也许可以简化它,但这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)