什么是创建新对象的更好方法

时间:2016-11-09 20:56:19

标签: php object

我有对象$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;`

1 个答案:

答案 0 :(得分:1)

Pre:有关使用stdClass或数组来保存代表性数据的讨论,请参阅this answer

答案:

  1. 第一种方式非常糟糕,因为在将数组转换为对象时会增加不必要的开销(当您可以将数组用于此目的时)。

  2. 第二种方式有效,但并不理想。它并不像处理对象(在生活中)那样真正地处理对象(在代码中),因此不适合面向对象的范例。 (但是,根据评论,它似乎确实是这种情况的最佳选择。)

  3. 最好的方法(从OO的角度来看)是定义对象类。

  4. 示例定义:

     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);