从子类PHP调用父类

时间:2009-04-24 15:13:40

标签: php oop non-english

$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类的方法返回数据的值

我希望自己能够澄清一下 / 修改 /

无论如何都要这样做?

2 个答案:

答案 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类是全局的,并且只调用一次