2012-11-14 65 views
0

我是OOP的新手,我無法弄清楚爲什麼這種方式不起作用。在類中實例化類是否可行?我已經在包含該方法的文件中嘗試過這種方法,但沒有做任何更改。如何在.php中實例化類中的類

include('Activate.php'); 

class First { 
    function __construct() { 
    $this->activate(); 
    }  
    private function activate() { 
    $go = new Activate('Approved'); 
    } 
} 

$run = new First(); 
+0

你在哪裏實例化第一個(你有'$ first = new First();'稍後?) –

+0

YES ..我會編輯。我在文檔結尾處發起課程。 – krazymatty

+0

是'include'工作嗎?它可以返回false。你的意思是讓'$ this-> go = new Activate(...)'?你創建一個新的'Activate',然後它被放棄,因爲'activate()'函數完成。我無法分辨這是否是故意的。 –

回答

0

好吧,我想出了我的問題。我的代碼有兩個錯誤。一個是我的方法被設置爲私人,其次我在我發送給班級的$parms中發生錯誤。

include('Activate.php'); 

class First { 
    function __construct() { 
    $this->activate(); 
    }  
    private function activate() { 
    $go = new Activate('Approved'); 
    } 
} 

$run = new First(); 
1

你是說你想訪問$go?因爲,如果是這樣的話,你需要改變它的範圍。

正如你看到的,$go在這種方法僅適用內activate()

private function activate() { 
    $go = new Activate('Approved'); 
} 

,使其從類中的其他位置訪問,您將需要外界activate()聲明它:

private $go = null; 

您使用$this致電$go

private function activate() { 
    $this->go = new Activate('Approved'); 
} 

之後,如果你想從課外訪問旅途中,你需要創建包裝:

public function getGo(){ 
    return $this->go; 
} 

希望這有助於。此外,您可以閱讀documentation about OOP in PHP

+0

以下是大圖。我在運行時正在運行一個類。在課堂內部,我檢測到天氣或沒有註冊該程序。如果它已被註冊,那麼我需要實例化另一個類。我一起扔在一起的方法的名字。 – krazymatty