2012-04-08 2 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, которую используете, а также свою ОС. Это особенно важно для ООП. Они являются обязательными для действительного отчета об ошибке. Вот что я получаю, когда пытаюсь запустить ваш код в CLI, PHP 5.4.0: 'PHP Parse error: синтаксическая ошибка, неожиданная '(', ожидающая '{' в /home/xxx/oop.php в строке 2' –

+0

приведенный выше код не является работоспособным, его показать порядок, в котором выложены события. – Eli

ответ

0

Я думаю, что это может быть связано не с вызовом метода дважды, а с некоторыми ошибками в вашем коде. Прежде всего, вы объявляете класс с кронштейнами:

class Singleton() 

должно быть:

class Singleton 

Кроме того, вы объявляете класс как Parent который является зарезервированным словом в PHP, поэтому попробуйте переименовать, что первый ,

+0

Кроме того, 'Singleton' не имеет метода с именем' init' и имеет открытый конструктор, поэтому он не является синглом. исправьте все эти ошибки, которые он отлично работает для меня. – Godwin

+0

Я дал суть моей php-логики, я предположил, что люди будут знать, что я пытаюсь сказать, но на моей стороне нет ошибок кодирования. – Eli

+0

Я думаю, что нам все еще нужно 'init' хотя. – Godwin

Смежные вопросы