- 1
- 2
- 3
- 4
$w="";
foreach(array("id_page","id_point","id") as $i)
$w.=$$i?(($w?" and ":"")."$i=".$$i):"";
$sql="select * from ".$this->_name." where $w order by ordr,ts desc";
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+161.1
$w="";
foreach(array("id_page","id_point","id") as $i)
$w.=$$i?(($w?" and ":"")."$i=".$$i):"";
$sql="select * from ".$this->_name." where $w order by ordr,ts desc";
и без комментов, ага.
guest 18.08.2009 13:55 # 0
человек продемонстрировал знание переменных имён переменных...
Yozheg 18.08.2009 14:48 # 0
Yozheg 18.08.2009 14:55 # +1
$w = array();
foreach(array("id_page","id_point","id") as $i)
if(isset($_GET[$i]))$w[] = $i.'=\''.$_GET[$i].'\'';
$sql="select * from ".$this->_name." where ".implode(' AND ',$w)." order by ordr,ts desc";
guest 18.08.2009 15:41 # 0
то ест ь метод там нечто вроде
public function get_page($id_page = false, $id_point = false, $id = false)
никакого гета ) и регистр глобал
guest 18.08.2009 21:56 # +1
и вобще, конструировать имена переменных в процессе программы неправильно, их потом не отловишь в идешках, рефакторинг проводить неудобно, код становится трудночитаем. и компилятор не может такой код оптимизировать, потому что имена переменных вычисляются на этапе выполнения и не видны на этапе компиляции
guest 19.08.2009 10:51 # 0
xscript 25.08.2009 00:37 # 0
Собирать sql таким образом намного удобней, нежели развертывать в 10 строк. Все изящно и красиво!
Вылавливать ошибки здесь нечего, вывел сгенерированный $sql и все, дальше нигде этих переменных нет. Да и при взгляде на $w внутри $sql="select * from ".$this->_name." where $w order by ordr,ts desc"; сразу можно догадаться что делает предыдущая строчка $w.=$$i?(($w?" and ":"")."$i=".$$i):"";
Да выдрано это с контекста.
guest 25.08.2009 18:02 # 0
хотя код конечно явный. немного призадуматься и всё явно,
другой момент что форматирование кода ужасно,
советую вам внимательно прочитать главу 31 товарища Макконела
мне такой подход сбора sql понравился при большом количестве
полей и переменных.
Кстати, а почему вы не используете Zend_Db ?
и ЗЫ книжки умные мы тоже читаем. посему и порой берёмся за голову.
к сожалению перегруженные контроллеры и убитую архитектуру зф здесь
не выложиш, да и не надо думаю. Хотя в целом основной косяк системы
это перегруженный индекс контроллер, который мне лично напоминает антипатерн звёздный класс, мультиметоды в моделях и УЖАААСНОЕ форматирование кода и названия имён переменных .
ах да! смарти . для интеграции которого стоило бы скопипастить класс
с официальной доки зф ....
guest 25.08.2009 11:55 # 0
во-первых, это метод где передаются переменные по роуту, кто кодил используя Zend Framework тот в курсе, то есть переменные заранее определены и никаких нотисов тут не будет.
во-вторых, значения передаются и обрабатываются как тип integer, то есть sql-иньекции тут быть не может.
тот кто продолжает делать toyot'у - читай лучше книжки умные, а не фигнёй занимайся.
автор кода
voblasoul 25.08.2009 18:01 # 0
Код может быть и вправду красивый и изящный, но читать его удовольствие ниже среднего, плюс отсутствие комментов, поясняющий этот полёт мысли.
И не понятно, почему ж он из контекста вырван. В цикле формируется запрос, дальше сам запрос. Какой контекст?
inkanus-gray 04.06.2016 14:53 # 0
3_14dar 04.06.2016 19:47 # 0