- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Иллюстрирую такой код для примера, который состоит из 5 классов.
- Класс Chief создает и возвращает объекты и имеет четыре наследника.
- Класс библиотеки Library с различными методами и свойствами, которые доступные для использования всеми последующими;
- Два класса модулей Module и один View - выводит общую картину.
Вопрос: нужно предавать объекту класса Library информацию о том в которых классах осуществляется его вызов, то есть переменную $descendantClassName.
Можно было б передать это параметром в конструкторе self::$obs[$name] = new $class($descendantClassName) и при создании объекта $this->lib использовать эту инфу. Но это возможно только 1 раз, при дальнейших вызовах объекта $this->lib он просто возвращается из массива с первоначально заложенным значением переменой $descendantClassName. Как тогда передавать классу Library постоянно меняющиеся данные из переменной $descendantClassName если возвращается уже созданный объект.
Или какие-то такие костыли, или может с рефлексией заморочиться, или рассказать для чего вам это человеческим языком, а то похоже на проблему x y (http://7bloggers.ru/xy-problem/)
Позвольте поинтересоваться, а зачем такое надо, ООП ради ООП ?
Если из наследуемого класса вам нужно постоянно переопределять функцию или переменную, то лучше сделать не в наследуемом, а в основном классе.
Или какие-то такие костыли
В чем именно замечен костыль?
Возможно есть другое решение как передать данные в $this->lib. - дополнить эту структуру. Может существуют подходящие паттерны?
В чем именно замечен костыль?
Возможно есть другое решение как передать данные в $this->lib. - дополнить эту структуру. Может существуют подходящие паттерны?
А что мешает реализовать магический метод __set?
Как то так:
Как то так вообщем.
P.S. Только фабрика у вас так себе получилась. Мой совет - курите GoF дальше
В чем именно замечен костыль?
Внутреннее чувство жопой, что если классу нужно знать имя вызывающего его класса - то это костыль.
И костылём я своё предложение называл.