Извините, мой титул невелик, это мой первый настоящий punt при переходе на 100% в OO, поскольку я был процедурным в течение многих лет, чем я помню. Мне трудно понять, возможно ли то, что я пытаюсь сделать. В зависимости от мысли людей по двум следующим пунктам, я схожу по этому маршруту.Шаблоны для динамических компонентов CMS (событие управляется?)
CMS Я собираю цитату небольшую, однако фокусируется на разных типах контента. Я мог бы легко использовать Drupal, с которым мне очень комфортно, но я хочу дать мне действительно веские причины переместить себя в шаблоны дизайна/OO-PHP
1) Я создал базовый класс контента, который Я хочу иметь возможность распространяться на различные типы контента. Базовый класс, например, обрабатывает содержимое HTML, и расширения могут обрабатывать XML или PDF-вывод. С другой стороны, в какой-то момент я могу полностью расширить базовый класс для данного проекта. То есть если класс 'content-v2' расширенного класса 'content' для этого сайта, любые вызовы этого класса должны фактически называть 'content-v2'. Это возможно?
Если код создает экземпляр объекта типа «content» - я действительно хочу, чтобы он создавал экземпляр одного из типов «content-v2» ... Я могу видеть, как это сделать, используя наследование, но это, как представляется, связано со ссылкой на класс явно, я не вижу, как связать класс, который я хочу использовать, вместо этого динамически.
2) Во-вторых, способ, которым я строил это в настоящий момент, ужасен, я недоволен этим. Он чувствует себя очень линейно, т. Е. Получает информацию о сеансе> получать контент> строить навигацию> тема страницы> публиковать. Для этого все объекты называются 1-на-1, которые все очень статичны. Я бы хотел, чтобы он был более динамичным, чтобы я мог добавить его позже (очень близко к первому вопросу).
Есть ли способ, который вместо моего класса оркестра вызывает все остальные классы 1-на-1, а затем строит все в конце, что вместо этого каждый из других классов может «прослушивать» определенные события, то в подходящую точку прыгать и делать их, но? Таким образом, классу оркестра не нужно было знать, что требовали другие классы, и называть их 1-на-1.
Извините, если у меня все это искривлено в моей голове. Я пытаюсь построить это, чтобы он был очень гибким.
Хотя он датирован, он выглядит как хороший ресурс (бесплатная PHP OO eBook), чтобы начать работу с некоторыми из основ: http://www.pdf-word.net/Tutorial-Programming-PHP/Object-Oriented-Programming -In-PHP5.html – Jaxidian
Большое спасибо за ваш блестящий ответ, очень ценим! Я думал, что понимаю полиморфизм, но явно не так, как я не верил, что это решение ... Ps эти имена классов не были настоящими, просто попытка проиллюстрировать мой вопрос: 0) – CitrusTree
Так что меня смущает проиллюстрировано здесь: http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming#PHP Я понимаю вещь «Кошка/Собака», но «Кошка и собака» по-прежнему ссылаются на то, чтобы явно их избегать. Как мы называем Cat или Dog в зависимости от текущего состояния. Предположим, что каждая запись в таблице содержимого записала его тип контента. Не могли бы вы использовать что-то вроде: $ content = new $ row ['type']; $ content-> publish; ... где $ row - текущая строка набора записей, а тип - это (допустимое) имя класса? – CitrusTree