dr.nomore
6.12.2013 - 03:31
Цитата |
Другой вопрос, что акшенов там должно быть столько, сколько необходимо для этой страницы, не более. А они уже решают, какую модель юзать. Здесь ведь можно нарваться и на другую крайность, тем же Брэди задекларировнную - "лучший контроллер - пустой контроллер".
Если мне для нормальной работы стрницы требуется чтение-добавление-редктирование, то и должно быть три акшена. read-add-edit. Прятать это в недрах паттернов нерационально и не прозрачно. |
Вы хотите сказать edit это модель которую подключает контроллер через выбранное действие. Однако из вашего контроллера ничего не подключалось насколько я помню. Прямо в экшн засасывались все данные и куда-то там отдавались. На вид, наверно, ставили их.
Если вы все-таки хотите сказать что Edit это модель которую контроллер загружает, то у меня все переворачивается.
Модель без всяких контроллеров знает что делать когда пришла команда редактировать, вставлять или удалять. Он же - модель, кому как не модели лучше всех известно устройство таблицы и отношений и всей этой логики иф-елсе.
Правильно тот чувак сказал. На вебе контроллер не нужен. Контроллерами на вебе служат суперглобальные массивы. Любая хрень может ткнуть пальцем в небо и выковырять оттудова все ей необходимое.
В общем привычка не отпустила разрабов. Как в доклассовую эпоху они собирали инклюдами скрипт из кусков по сегментам в урле - так и собирают, но теперь через экшоны.
dr.nomore
6.12.2013 - 03:44
Ну хорошо, три экшона на insert, update, delete.
class cDML {
public function __construct($some_arg_like_link) {
}
protected function execute($some_options) {
}
}
class cDML_INSERT extends cDML {
public function __construct($some) {
parent::__construct($some);
}
public function execute($some_options) {
}
}
if($action = $this->_config->get->edit) {
$class_name = 'cDML_' . $action;
$class = new $class_name();
$class->execute();
}
Что не так?
dr.nomore
6.12.2013 - 03:49
Да, если это не полиморфизм, убейте меня абстену.
А когда все экшоны в хардкоде, это убейте себя апстену.
dr.nomore
6.12.2013 - 03:54
Кстати, is_callble() тычет автолодер. Так что все спок проверится.
Ну в общем то да, соглсен. В этом что-то есть.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Invis1ble
6.12.2013 - 17:29
блин, я запутался...
так как лучше или правильней будет?
подключаем класс, проверяем доступные методы через get_class_methods
или Reflection будет лучше заюзать? не работал с ним, по диагонали просмотрел
номер раз:
$class = new ReflectionClass($contrName);
$methods = $class->getMethods(ReflectionMethod::IS_PUBLIC);
var_dump($methods);
номер два:
$class = new $contrName();
var_dump(get_class_methods($class));
есть разница?
И еще какая.
Можно при определенных условиях удалить гланды через
жо задний проход.
Причем тут рефлексия то? Мало ли кто чего в пылу запарки написал.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Invis1ble
7.12.2013 - 00:15
Реально спросоня не совсем въехал в тему ))
Самый оптимальный вариант - юзать префиксы для методов экшенов и проверять с помощью method_exists().
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Invis1bleПроснись и дальше)))
is_callble() прикольная штука на самом деле, method_exists() - жалкое подобие
левой руки
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Invis1ble
7.12.2013 - 00:58
is_callable() будет выполнять лишнюю работу, кроме того
class A {
public function __call($a, $b) {}
}
$a = new A;
var_dump(is_callable([$a, 'action_shit']));
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Из контекста зря это выдернуто.
Вернись немного...
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Invis1ble
7.12.2013 - 01:13
twinЯ так понял, что ты предлагаешь юзать is_callable() вместо method_exists(). Я неправ? Куда вернуться?
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Invis1ble
Ты не первый год на форуме. И уж кто, а ты должен точно знать, что ничего я не предлагаю и предложить не могу. Я могу только высказать предпочтения.
В данном случае - да, парень меня убедил, что не все то золото, что блестит.
Особенно этой фразой:
Цитата |
Не смогли осилить императива. |
Дело в том, что method_exists() имеет гораздо меньший ареал приминения, чем is_callable(), посмотри мануал. Я уже естественно молчу про __call и иже.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.