Sınıfın başka bir sınıftan çağrıldığını

3 Cevap php

Ben aşağıdaki kodu vardır varsayalım:

class siteMS
 {
    ...
    function __CONSTRUCT()
     {
     	require 'config.php';
     	$this->config = new siteMSConfig;
     	...
     }
    ...
 }

SiteMSConfig sınıfı içinden ben hava belirleyebilir veya siteMS sınıfı içinden çağrıldığını değil?

3 Cevap

Evet, ama bunu yapmak için hiçbir "güzel" bir yolu var - bir backtrace ya da benzer bir şey bakarak bitireceğiz.

Bu gibi siteMSConfig kurucusuna bir (? Opsiyonel) parametre geçmek için daha iyi olurdu:

class siteMSConfig
{
    public function __construct($inSiteMS = false)
    {
    }
}

ya da seçenek olarak, alt sınıfı siteMSConfig,

class siteMSsiteMSConfig extends siteMSConfig
{
    public function __construct()
    {
        // Possibly call parent::__construct();
    }
}

Teknik olarak evet, debug_backtrace arayan kim olduğunu anlamaya kullanabilirsiniz.

Olsa daha sonra acı bir dünya istiyor çağrılan yere dayalıyken davranışını değiştiren bir sınıf yazıyorum. Neden farklı bir davranış parametreleştirilmesi, ya da bir alt sınıfı yapmak değil mi?

Ben bunu dediği yerdir gelen değişkeni ile geçmek zorunda sanırım

$this->config = new siteMSConfig ('siteMS');