2012-04-08 30 views
0

我在單例類中有一個方法,這個類是從父類中調用的,該類由子類擴展。調用兩次來自不同類的方法導致內存不足錯誤

假設我的類已被正確聲明和創建,這只是我的編碼邏輯的快速運行。

class Singleton 
{ 
    public function load_sys() 
    { 
     $this->something(); 
    } 

    public function something() 
    { 
     $this->load(); 
    } 

    public function load(){} 
} 

class Parent 
{ 
    public function __construct() 
    { 
     $this->sys = Singleton::init(); 
     $this->sys->load_sys(); 
    } 
} 

class Child extends Parent 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

當我做這個,我得到這個錯誤:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4296 bytes) in ~~~.php on line 102 

可能會造成什麼呢?

+0

你應該寫你正在使用的PHP版本,以及你的操作系統。這對於OOP尤其重要。這些對於有效的錯誤報告是強制性的。這裏是當我嘗試在CLI,PHP 5.4.0中運行你的代碼時得到的結果:'PHP Parse error:syntax error,unexpected'(',expect'''in'/home/xxx/oop.php on line 2' – 2012-04-08 07:30:16

+0

上面的代碼是不可行的代碼,它顯示事件的佈局順序 – Eli 2012-04-08 08:07:44

回答

0

我認爲這可能不是由於調用了兩次方法,而是由於代碼中的一些錯誤。首先,您聲明用括號類:

class Singleton() 

應該是:

class Singleton 

此外,您聲明一個類爲Parent這是PHP的保留字,所以嘗試重命名,首先。

+0

另外,'Singleton'沒有名爲'init'的方法,並且有一個公共構造函數,所以它不是一個單獨的。修復所有這些錯誤對我來說運行良好 – Godwin 2012-04-08 07:24:20

+0

我給了我的PHP邏輯的一個要點,我認爲人們會知道我想說什麼,但是沒有編碼錯誤在我身邊 – Eli 2012-04-08 07:26:45

+0

我認爲我們仍然需要'init'雖然 – Godwin 2012-04-08 07:27:27

相關問題