|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
Здравствуйте.
Подскажите как можно сделать следующее: 1. имеется объект базы данных, например $pdo = new PDO([params]); 2. имеется абстрактный класс, например Controller. Он явл. родителем всем контроллерам в программе. Я хочу чтоб его потомки могли обращаться к PDO, например $this->db->query("запрос");
Пытался сделать через статические свойства или методы и что-то ни как. Есть идеи? Добавлено через 2 минуты и 59 секунд при этом обязательно нужно чтоб каждый потомок имел метод index(); |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
Абстрактные классы отличаются от неабстрактных только тем, что new сделать нельзя. Все остальное можно.
Разумно доопределить класс-сеттер монтажа базы данных в объект. Или пусть объект сам выковыривает из окружающей действительности необходимые параметры. Так, например:
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
numerovan |
|
||||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
интересную вы предложили идею
параметры у меня фиксированны, одни. Добавлено через 8 минут и 27 секунд
Как лучше ... может статик убрать? и чтоб для каждого потомка был свой db? Это сообщение отредактировал(а) numerovan - 16.4.2016, 18:28 |
||||
|
|||||
numerovan |
|
||||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
Сделал пока так:
Можете как-то разкритикировать данный код? Ниже абстрактного класса Controller вынужден был создать дополнительный класс VnrgLoad, но хотел бы его не создавать а как-то разместить в абстрактном классе Controller. Он мне нужен чтоб подгружать модели и языки в программу. Можно ли такое реализовать только в абстрактном классе Controller? Что вы думаете по поводу перечачи аргументов в создоваемый объект, стоит ли вообще так делать или нет?
|
||||
|
|||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 1 Всего: 386 |
То есть имеются обязательные глобальные объекты db, smaty и их статические ссылки в контроллере? Зачем дублировать?
Зачем еще один класс, если можно методы model и lang определить в магии контроллера? Лучше, конечно, не просто выдавать в магическом методе ссылку, а сформировать заодно и собственный атрибут с таким именем, чтобы излишней магии избежать. Также, появится потенциальная возможность переопределить db и smarty для отдельного контроллера. Все что делает lang - подгружает нужную модель в зависимости от языка? А если модель пока недостаточно локализована? Языка по умолчанию нет? Вообще - вместо die разумнee использовать Exception, его хотя бы перехватить можно. eval - должен быть красной тряпкой для любого вменяемого программиста. Для каждого такого применения нужно ну очень убедительное объяснение, что по другому сделать нельзя. В этом случае можно зафиксировать количество параметров при вызове конструктора, либо сделать конструктор с пустыми параметрами и дополнительный метод `init` с нужным количеством параметров. Тогда все можно решить именем класса `из переменной` и call_user_func_array. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |