Alt Sınıfı PHP itibaren üst sınıf çağırıyor

2 Cevap php

http://stackoverflow.com/questions/742097/this-a-b-c-d-calling-methods-from-a-superclass-in-php

Ive Ben bir sınıftan alt sınıfları çağırmak mümkün duyuyorum bu tekniği ile sorunumuz var, bu linke bir soru sordu

böyle

$ Chesterx-> db-> query ();

I wanna alt sınıf başka sınıf alırım

örneğin

i sql sınıfından gelen hangi yürütmek sorgulamak istiyorum

            ROOT
             |
sql <---  chesterx --->  db

i db den sql sınıfını kullanmak istiyorum

i db sınıftan chesterx sınıf iade edemem sorun

/ edit /

Ben haber, üyeleri, kategoriler, db ve sorgu gibi bazı sınıfları var

ve i konu üst oldu link gibi yaptım

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;
            }
        }

ben bu kod ile db sınıfı olarak adlandırılan ve şimdi ben de db sınıf yöntemleri çağırmak ve kullanmak mümkün duyuyorum

örneğin

i db bir yöntemi kullanmak istiyorum

bu yöntem chester sınıfının yöntem bir veri dönen bir değer içeren bir

i wish i were clarify myself / edit /

Bunu yapmak için yine de var mı?

2 Cevap

Ben dava için Ionut G. Stan çözümü iyi buluyorum, ama sizin chesterx sınıf küresel bir ise sadece iyi, ve sadece bir kez çağrılır olsa da, factory/singleton pattern düşünebilirsiniz

Gerçekten döngüsel başvuruyu sevmiyorum rağmen aşağıda pasajı, bir çözüm olabilir. Deneyin ve size uygun olarak kullanabilirsiniz. Ve bu arada, ne sınıf ve alt sınıf aradığınız aslında containing and contained class.

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);
    }
}