Вид получил проблему с использованием наследования / полиморфизма с частными методами.
Пример:
class cmsPage{ private function getBlock(){ $block = new cmsBlock(); return $block } function createBlock(){ $block = $this->getBlock(); $block->save(); } //... do various things } class specialCmsPage extends cmsPage{ private function getBlock(){ $block = new specialCmsBlock(); return $block } }
Естественно, я хочу, чтобы specialCmsPage наследовал все методы из cmsPage. Функция getBlock()
должна убедиться, что все блоки контента, добавленные в specialCmsPage, имеют тип specialCmsBlock, а не cmsBlock.
Я понял, что он работает только так, как я ожидаю, если я удалю «частные» из методов класса, но я бы предпочел использовать их, потому что эти методы нельзя вызывать извне класса. При использовании « private » перед getBlock()
specialCmsPage всегда получает объект cmsBlock.
Есть ли способ достичь того, что я хочу использовать « частный »?