微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何让两个类与彼此进行交互

我想从另一个类实现一个类,但是当我尝试在类foo中调用db的函数时,它会失败,除非我使用新的db()并在同一个函数调用函数

class foo {
  private $db;
  public function __construct() {
    $db = new db();
// if i call $db->query(); from here it works fine
  }
  public function update(){
  $db->query();
  }
}
class db {
  public function __construct() {
  }
  public function query(){
    echo "returned";
  }
}

$new_class = new foo();
$new_class->update();

这段代码给了我一个错误,说我在第7行有一个未定义的变量db,并在非对象上调用成员函数query().

解决方法:

而不是$db,你应该使用$this-> db.

在你的代码中,$db是__construct函数的本地,

public function __construct() {
  $db = new db();
  // $db is only available within this function.
}

而你想把它放入成员变量,所以你需要使用$this代替,

class foo {
  private $db; // To access this, use $this->db in any function in this class

  public function __construct() {
    $this->db = new db();
    // Now you can use $this->db in any other function within foo.
    // (Except for static functions)
  }

  public function update() {
    $this->db->query();
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐