Задать вопрос

Почемеу вызов наследуемого класса с обращением к абстрактному методу приводитк к ошибке памяти?

<?php

	abstract class R{

		abstract function r();

	}

	final class A extends R{
		public function r(){
			echo "a";
		}
		public function a()
		{
			return $this->r();
		}
	}

	class B extends R{

		public function r(){
			echo "b";
		}
		public function b()
		{
			return $this->r();
		}
	}

	class C extends R{
		public function r(){
			echo "c";
		}
		public function c()
		{
			return $this->r();
		}
	}

	class D extends B{
		public function r(){
			return $this->b();
		}
	}

$a = new A();
$b = new B();
$b = new C();
$b = new D();


Сама ошибка:
Allowed memory size of 1610612736 bytes exhausted (tried to allocate 262144 bytes)

Да я могу пробовать решить это через php.ini, но конкретно в данном примере я хочу понять как образуется такая нагрузка. Наверно...
  • Вопрос задан
  • 139 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Stalker_RED К ответам на вопрос (3)
Stalker_RED
@Stalker_RED
Не делайте так. Если имя метода совпадает с названием класса, то этот метод вызывается в качестве конструктора. Но это deprecated, и с седьмой версии уже выдает предупреждения. Лучше переписать с использованием __construct().
Ответ написан