2012-04-08 6 views
0

Ich habe eine Methode in einer Singleton-Klasse, diese Klasse aufgerufen von einer Elternklasse, die von einer Kindklasse erweitert wird.Aufruf einer Methode zweimal aus verschiedenen Klassen verursacht einen nicht genügend Speicherfehler

Angenommen, meine Klassen wurden ordnungsgemäß deklariert und erstellt, dies ist nur ein kurzer Überblick über meine Codelogik.

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

, wenn ich dies tun bekomme ich diesen Fehler:

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

was dies verursacht werden könnte?

+0

Sie sollten die Version von PHP, die Sie verwenden, sowie Ihr Betriebssystem schreiben. Dies ist besonders wichtig für eine OOP. Diese sind obligatorisch für einen gültigen Fehlerbericht. Hier ist, was ich bekomme, wenn ich versuche, Ihren Code in CLI, PHP 5.4.0 auszuführen: 'PHP-Parse-Fehler: Syntaxfehler, unerwartet '(', erwartet '{' in /home/xxx/oop.php in Zeile 2' –

+0

Der obige Code ist kein bearbeiteter Code, er zeigt die Reihenfolge an, in der die Ereignisse angeordnet sind – Eli

Antwort

0

Ich denke, dies ist möglicherweise nicht auf den Aufruf einer Methode zweimal, sondern einige Fehler in Ihrem Code. Zu allererst Sie sind eine Klasse mit Klammern erklärt:

class Singleton() 

sollte sein:

class Singleton 

Auch Sie sind eine Klasse als Parent erklärt, die in PHP ein reserviertes Wort ist, so versuchen Sie, dass zuerst die Umbenennung .

+0

Außerdem hat 'Singleton' keine Methode namens' init' und hat einen öffentlichen Konstruktor, so dass es kein Singleton ist behebt alle diese Fehler, es läuft gut für mich – Godwin

+0

Ich gab einen Kern meiner PHP-Logik, ich nahm an, dass die Leute wissen würden, was ich zu sagen versuchte, aber es gibt keine Codierungsfehler auf meiner Seite – Eli

+0

Ich denke, wir brauchen noch "init" obwohl. – Godwin

Verwandte Themen