php read mongodb.findone()返回json值并创建对象
我有一个employee类,我想从mongodb.findone()返回的数组中初始化employee对象php read mongodb.findone()返回json值并创建对象,php,json,mongodb,object,Php,Json,Mongodb,Object,我有一个employee类,我想从mongodb.findone()返回的数组中初始化employee对象 foreach($res as $key => $value){ echo $value; // here values printed } 但是我需要做一些类似的事情(如果key='first\u name'然后employee\u obj->set\u first\u name($value),如果key='last\u name'然后employee\u obj->s
foreach($res as $key => $value){
echo $value; // here values printed
}
但是我需要做一些类似的事情(如果key='first\u name'然后employee\u obj->set\u first\u name($value),如果key='last\u name'然后employee\u obj->set\u last\u name($value)…你能帮我吗
$employee = new Employee;
foreach($res as $key => $value){
if (property_exists($employee, $key)) {
$employee->$key = $value;
}
}
$employee->$key=$value
正在将$key
属性动态分配给员工。例如:
$key = "name";
$employee->$key = "John Doe";
echo $employee->name; // John Doe
如果要对私有或受保护的属性执行此操作,则需要在类或实例中执行赋值:
class Employee {
// ...
private $name;
// lets you assign properties by passing in an array
public function __construct($arr = array()){
if count($arr) {
foreach($arr as $key => $value){
if (property_exists($this, $key)) {
$this->$key = $value;
}
}
}
}
}
$joe = new Employee(array('name' => 'Joe'));
echo $joe->name // Joe
确实如此。什么是员工->$key?我的employee类有私有成员m_first_name这会给它分配$value吗?编辑了更多细节,希望这能回答你的问题。这真的很酷,,,但我有一个“坏”传统,就是用m_开头。在我的例子中,名字是不同的。这只是一个例子,你可以给你的财产(成员)命名,不管你想命名什么。如果您使用用户输入进行此操作,请务必小心,因为它需要被列入白名单以避免出现大规模分配漏洞。当然有,,,但这是一种好方法吗?我的意思是,每次检查$key都不是一种有效的方法,是吗?@MherDidaryan好吧,有不同的方法,例如许多框架允许你使用魔法,让
$e->last\u name=“sam”
参考$e->set\u last\u name(“sam”)
但是如果不深入到PHP语言中进行编码,你就不会变得更好
$e = new Employee;
foreach($res as $k => $v){
if($k == 'first_name'){
$e->set_first_name($v);
}elseif($k == 'last_name'){
$e->set_last_name($v);
}else{
$e->$k = $v;
}
}