php - 返回其子类的新实例的方法
问题描述
使用 PHP 7,我想在超类(父)上创建一个方法,在子类(子)上调用该方法时,将返回子类的新实例。
我目前有我想做的工作,但我求助于 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不允许eval)
解决方案
推荐阅读
- mysql - MySQL 中的 JOIN 和简单 SELECT 有什么区别?
- reactjs - React Native "GET /onchange HTTP/1.1" - - "-" "okhttp/3.6.0" 反应原生更新后的日志
- python-3.x - requests.put() ,休息 api 在请求正文中发送 json 时抛出错误的请求错误
- php - php gettext 忽略语言环境
- omnet++ - Omnet++ 相扑和静脉
- excel - 通过使用变量传递位于工作簿中任何位置的表的名称来创建 ListObject
- python - 使用 sklearn - python 具有分类特征的多元线性回归
- c# - 从循环引用类中的父类获取类和一些数据
- python - Python len() 方法不返回值
- c# - 不同对象的序列化列表