PHP类-在_构造中返回一个行ID,并始终引用该行ID

PHP类-在_构造中返回一个行ID,并始终引用该行ID,php,class,oop,Php,Class,Oop,试着让我的头脑了解如何使用类并将其作为一个对象 Im正在将多个函数转换为使用单个类。这门课是给顾客的 我要做的是创建新的customer对象: $customer = new Customer($customer_info); 我的班级目前看起来: class Customer { private $customer_info; private $mysqli; function __construct(Array $customer_info, Mysqli $mysqli)

试着让我的头脑了解如何使用类并将其作为一个对象

Im正在将多个函数转换为使用单个类。这门课是给顾客的

我要做的是创建新的customer对象:

$customer = new Customer($customer_info);
我的班级目前看起来:

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对象时,我正在传入信息,然后我想插入一行,或者用传入的新customer information数组更新当前行

这很好,我已经在其他函数中完成了

但是,在此之后,我希望能够在该对象上使用许多函数

例如:

$customer = new Customer($customer_info); // create / update
$customer = customer->getCustomerID();
我希望getCustomerID函数只返回在启动新对象时创建/更新的数据库行的ID。在我的课堂上,你可以看到我如何设置一个值,然后在函数中使用它。。。但我确信这不是它的工作原理

我使用了Laravel,希望它能像那里的课程一样工作


谢谢。

您必须创建类变量

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

}

“返回当前对象的ID”是什么意思?以Laravel为例,可以执行$user=user::find(1)$user-delete();这个delete函数,您不必传入行ID,对象只知道它与您找到的行有关……所以您的“Customer”类中可以有多个Customer对象?因此,正确的名称应该是CustomerRepository或CustomerCollection,或者类似的名称。我错了吗?只是关于你的设计的一个注释,构造函数真的不应该做任何真正的工作。他们所要做的就是将对象初始化为有效的默认状态。它将只引用/创建/影响一行。如果这就是你的意思?这就是我刚才所做的:)现在我有了我的头脑,一切都很好。谢谢你的回复。