PHP Class - return __construct 中的行 ID 并始终引用它

PHP Class - return a row ID in the __construct and always reference that

尝试使用 classes 并将其用作对象。

我正在将多个函数转换为使用一个函数 class。这 class 是给客户的。

我想做的是创建新的客户对象:

$customer = new Customer($customer_info);

我的 class 目前看起来:

class Customer {

  private $customer_info;
  private $mysqli;

  function __construct(Array $customer_info, Mysqli $mysqli) {
    $this->mysqli = $mysqli;
    $this->customer_info = $customer_info;
    $result = $mysqli->query("SELECT * FROM `customers` WHERE id = 33");
    $customerArray = array();
    while ($customer = $result->fetch_object()) {
        $customerArray[] = array(
            'id' => $customer->id,
            'first_name' => $customer->first_name,
            'last_name' => $customer->last_name,
            'email' => $customer->email
        );
    }
    $customer_ID = $customerArray->id;
    //return var_dump($customerArray);
  }

  function getCustomerId() {
    return "id:$customer_ID";
  }

}

当我创建一个新的客户对象时,我正在传递信息,然后我想用传入的新客户信息数组插入一行或更新当前一行。

很好,我已经在另一个函数的其他地方完成了。

但是,在此之后我希望能够对该对象使用许多功能。

例如:

$customer = new Customer($customer_info); // create / update
$customer = customer->getCustomerID();

我希望 getCustomerID 函数只是 return 启动新对象时创建/更新的数据库行的 ID。在我的 class 目前你可以看到我是如何尝试设置一个值然后在函数中使用它的......但我确信那不是它的工作方式。

我用过 Laravel 并希望它的工作方式类似于 classes 在那里的工作方式。

谢谢。

你必须创建 Class 个变量

    class Customer {

  private $customer_info;
  private $mysqli;
 public  $customer_ID;

  function __construct(Array $customer_info, Mysqli $mysqli) {
    $this->mysqli = $mysqli;
    $this->customer_info = $customer_info;
    $result = $mysqli->query("SELECT * FROM `customers` WHERE id = 33");
    $customerArray = array();
    while ($customer = $result->fetch_object()) {
        $customerArray[] = array(
            'id' => $customer->id,
            'first_name' => $customer->first_name,
            'last_name' => $customer->last_name,
            'email' => $customer->email
        );
    }
    $this->customer_ID = $customerArray->id;
    //return var_dump($customerArray);
  }

  function getCustomerId() {
    return $this->customer_ID;
  }

}