返回其子类的新实例的方法

时间:2019-10-01 17:34:48

标签: php oop inheritance eval

使用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不允许评估)

0 个答案:

没有答案