$this->a->b->c->d calling methods from a superclass in php
我问了一个关于这个链接的问题我有这个tecnique的问题我可以从类中调用子类
像这样$ chesterx-> DB->查询();
我想从子类
获得另一个类例如
我想查询来自sql类的执行
ROOT
|
sql <--- chesterx ---> db
我想使用db
中的sql类问题我无法从db类
返回chesterx类/ 修改 /
我有一些类,如新闻,成员,类别,数据库和查询
我做的就像主题顶部的链接
public function __construct(){
function __construct(){
if(!$this->db){
include(ROOT."/func/class/bp.db.class.php");
$this->db = new db;
}
if(!$this->chester){
include(ROOT."/func/class/bp.chester.class.php");
$this->db = new chester;
}
}
我使用此代码调用了db类,现在我能够很好地调用和使用db类方法
例如
我想使用db
中的方法该方法包含一个从chester类的方法返回数据的值
我希望自己能够澄清一下 / 修改 /
无论如何都要这样做?
答案 0 :(得分:3)
下面的代码片段可能是一个解决方案,虽然我不太喜欢循环引用。尝试并按照您认为合适的方式使用它。顺便说一下,你所谓的类和子类实际上是包含和包含类。
class Database
{
public $chesterx;
public function __construct($chesterx)
{
$this->chesterx = $chesterx;
}
}
class Sql
{
public $chesterx;
public function __construct($chesterx)
{
$this->chesterx = $chesterx;
}
}
class Chesterx
{
public $db;
public $sql;
public function __construct()
{
$this->db = new Database($this);
$this->sql = new Sql($this);
}
}
答案 1 :(得分:3)
我发现Ionut G. Stan的解决方案对你的情况有好处,但你可能也想考虑factory/singleton pattern,尽管只有你的chesterx类是全局的,并且只调用一次