我有课,我在那里连接数据库并进行一些查询。
但我无法从其他类查询此数据库。问题是类(<*>)
无法看到数据库连接命令 - &gt;无法进行查询。这是代码:
Cd
答案 0 :(得分:0)
您的代码有点混乱,因此很难确定问题究竟在哪里:
$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代码,你应该查看他们的文档,也许可以使用其中一个而不是自己处理所有内容。