我有对象$customer
我需要使用联系信息创建新对象$contact
什么是创建它的更好方法?
/** the first way */
$contact = (object) array('name' => $customer->name, 'phone' => $customer->phone, 'email' => $customer->email);
/** the second way */
$contact = new stdClass();
$contact->name = $customer->name;
$contact->phone = $customer->phone;
$contact->email = $customer->email;`
答案 0 :(得分:1)
Pre:有关使用stdClass或数组来保存代表性数据的讨论,请参阅this answer。
答案:
第一种方式非常糟糕,因为在将数组转换为对象时会增加不必要的开销(当您可以将数组用于此目的时)。
第二种方式有效,但并不理想。它并不像处理对象(在生活中)那样真正地处理对象(在代码中),因此不适合面向对象的范例。 (但是,根据评论,它似乎确实是这种情况的最佳选择。)
最好的方法(从OO的角度来看)是定义对象类。
示例定义:
class Contact{
public $name;
public $phone;
public $email;
function __construct($name, $phone, $email) {
$this->name = $name;
$this->phone = $phone;
$this->email = $email;
}
}
示例实例化:
$contact = new Contact($customer->name,
$customer->phone,
$customer->email);