OOP PHP无法从其他类中获取新的mysqli

时间:2016-12-26 09:49:22

标签: php oop mysqli

我有课,我在那里连接数据库并进行一些查询。

但我无法从其他类查询此数据库。问题是类(<*>)无法看到数据库连接命令 - &gt;无法进行查询。这是代码:

Cd

1 个答案:

答案 0 :(得分:0)

您的代码有点混乱,因此很难确定问题究竟在哪里:

  • 为什么需要配置?
  • 为什么要在构造函数中创建一个数据库(更像是DbConfig)而不是传递它?
  • 什么是Scandiweb级?
  • 为什么要在该类上调用mysqli-&gt;查询而不是$this

最后一个是你的错误。您扩展myClass,创建mysqli连接并将其存储为类变量$this->mysqli。这意味着子类Cd将可以访问它。扩展课程时,您可以调用其所有公共和受保护的属性和方法。只有那些标记为私人的人才能被访问。

这意味着您可以执行$get->mysqli->query(...)而非访问$this->mysqli->query(...)。在OOP中有意义的是创建一次连接(就像在构造函数中一样)并将其传递给需要数据库连接的服务。这称为依赖性倒置原则,使用依赖性容器使其更容易(但不是强制性的)。

有一种所谓的设计模式可以更容易地处理执行上面代码中的SQL查询。最常见的是Laravel的Eloquent和Propel库中使用的Active Record-pattern,Zend Framework的DB组件和Table Data Gateway-pattern中使用的Data Mapper-pattern。由Doctrine ORM使用。如果你想编写OOP代码,你应该查看他们的文档,也许可以使用其中一个而不是自己处理所有内容。