使用PHP 7,我想在父类(父类)上创建一个方法,当在子类(子类)上调用该方法时,它将返回类Child的新实例。
我现在有想做的工作,但是我求助于eval并且希望避免这种情况。您能否指出一种我可以“更安全”的方式完成此操作的方式(即不使用eval)。
<?php
class _dbo{
public $id=0;
public $created=0;
function getInstance(){
$class = get_class($this);
$statement="return new $class('noname','noemail');";
return eval($statement);
}
}
class person extends _dbo{
public $name="";
public $email="";
function __construct($name, $email){
$this->name = $name;
$this->email = $email;
}
}
$joe = new person("joe","joe@example.com");
$doe = $joe->getInstance();
var_dump($joe);
echo("<br>");
var_dump($doe);
可以在此处测试代码:http://sandbox.onlinephpfunctions.com/(phptester.net不允许评估)