【问题标题】:Using a variable with a value assigned in a class's construct method else where without re assigning value使用具有在类的构造方法中分配的值的变量,而无需重新分配值
【发布时间】:2015-02-09 11:25:51
【问题描述】:

我有一个基础课:

class Customer {

  private $customer_info;
  private $mysqli;

  function __construct(Array $customer_info, Mysqli $mysqli) {
    $this->mysqli = $mysqli;
    $this->customer_info = $customer_info;
  }

}

在构造方法中,我为 mysqli 和 customer_info 变量赋值。

在每种方法中我都必须告诉它 $mysqli 是什么,但我觉得它只是在引用自己。

public function get() {
  $mysqli = $this->mysqli;
  // carry out mysql things
}

如果我不包含该行,那么任何语句等都不起作用,无论如何我可以做到这一点,所以我不必在每个方法中继续做 $mysqli = $this->mysqli 吗?

【问题讨论】:

  • 为什么你不在每个方法中使用 $this->mysqli 而不是 $mysqli?
  • 有道理:) 简单的答案是最好的。

标签: php class oop mysqli


【解决方案1】:

不,那是不可能访问你应该使用$this->myvar的类变量,除非你使用静态变量而不是你可以调用像self:$myvar这样的变量

【讨论】:

  • 这就是我正在寻找的答案 :) 谢谢。
  • @user2921557 请注意......如果你想使用 self::$mysqli 你必须将 $mysqli 更改为 static private $mysqli
【解决方案2】:

是的,你可以做到

在类中将变量设为 public 和 static。

public static $mysqli;

以及任何你可以访问静态成员的地方,比如

$mysqli = Customer::mysqli;

但更好的方法是将变量设为私有并通过调用类似的方法来使用它。

public function getSQLConn() {
  $mysqli = $this->mysqli;
  return $mysqli;
}

并获得价值/像使用它

$mysqli = $this->getSQLConn();

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多