LINUX.ORG.RU

Наследие в PHP

 


0

1

Есть дерево наследования классов A -> B -> C -> D -> ... Я хочу, чтобы каждый класс имел свою собственную статическую переменную $c. Но я не хочу в каждом классе объявлять её отдельно (static protected $x;). Есть ли способ автоматизировать этот процесс? Можно ли что-нибудь написать в самом старшем классе A, чтобы все его наследники обладали собственной переменной?

Я в начале подумал, что можно в каждом классе задавать trait Foo; - но это не работает, потому что с помощью traits можно присваивать только функции, но не переменные.

Интересует именно собственная переменная, а не одна, наследуемая всеми детьми от своего родителя.



Последнее исправление: cetjs2 (всего исправлений: 3)

Ответ на: комментарий от Graduate

Если у меня 20 классов, нужно 20 раз её задать

Но зачем?

Если тебе 20 требуется одна и та же переменная, то логично объявить её один раз в базовом классе.

А переопределение переменных, вообще, плохая практика. Хотя бы из-за неоднозначности логики в разных языках.

KRoN73 ★★★★★
()

Наследие в PHP

лол

anonymous
()

Вообще-то в trait-ах переменные можно объявлять.

static protected $x;

почему protected а не private?
Если хочешь в каждом классе свои приватные статики, то надо объявлять private в каждом классе...

Вариантов решений этой проблемы много и именно со своим статиком. Для полного «статического счастья» нехватает динамического определения const на стадии иннициализации класса...

swwwfactory ★★
()

user_id_68054

... Есть ли способ автоматизировать этот процесс? ...

...

... Если у меня 20 классов, нужно 20 раз её задать. Хочу найти способ задать это 1 раз и навсегда. ...

хм.. если у тебя есть куча классов, которые ты не хочешь сам программировать (а хочешь некоторую автоматизацию), то я предлагаю тебе два варианта решения:

1. использую eval() и автоматизируй классы — как хочешь :-D

2. перепродумай задачу таким образом чтобы классов было явно меньше :-) . наследование и ООП можно реализовывать не обязательно именно синтаксисом языка.. ООП можно съэмулировать самими экземплярами класса

user_id_68054 ★★★★★
()

Наследие в PHP
Есть дерево наследования классов

Таки наследие или наследование?

Yazaban
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.