ну так передавай просто код объекта и код действия, ты ведь всеравно проверяеш на валидность. например, dir=1&act=2. даже просто сравнить один символ а не строку будет быстрее, это раз.после проверок
Код для ?dir=News&sec=ShowNogrogomed, приведите реальный код проверок при котором НУЖНО использовать переменные полученные от пользователя для обращиния по ним к классам/методам. В крайнем случае где это если не нужно, но реально упрощает код.
$allow_dirs=array('News', 'Guestbook');
if (in_array($_GET['dir'], $allow_dirs))
$Obj = new $_GET['dir']();
else
// выдаем 404 или создаем объект по умолчанию
finction __construct()
{
$allow_secs= array('Show', 'ShowOne');
if (in_array($_GET['dir'], $allow_dirs))
$this->$_GET['dir']();
else
// выдаем 404 или метод по умолчанию
}
...жальсуть не изменится, и тогда смысл такой замены я не вижу
В принципе могу, но как раз таки ищу ответ на вопрос "Почему так не надо делать".если ты не можешь обойтись без явной передачи действия- делай по скрипту на действие
Непонял...смысл фронт контроллера тут теряется ибо имена файлов выполняют то же действие гораздо проще
Т.е. по index.php?id=8 я из восьмерки должен вытягивать, что в данном блоке содержится запуск (например) списка новостей? Т.е. я должен узнать, что надо создать объект news и вызвать метод Show? Или тут какой-то другой подход?если по умному -этот твой action следует получать по имени (идентификатору) страницы
Под что-то сравнивать я имел в виду запись логических условий.Автор оригинала: das6745
Pigmeich
обычно сравнения проводят для того чтобы определить права на запрашиваемый урл (имхо, в многопользовательских системах). хотя я возможно непонял про "что-то сравнивать"
http://www.php.lt/benchmark/phpbench.phpАссоциативные массивы - рулят.
На мой взгляд твой подход слишком хардкодный.Автор оригинала: Nogrogomed
извиняюсь, что вмешиваюсь в беседу, но все же хотелось бы узнать недостатки моего кода (с точки зрения не-ООП):
1. идиотизм полный?
2. попрет но нормальные люди так не делают?
3. имеет право на существование?
Просто периодически развиваю систему, и было бы неприятно потом узнать, что копал не в ту сторону.