Храню ресурсы запросов и гет переменные в св-вах, а мне говорят что это плохо 0о но что-то я не пойму чем..? PHP: <? ........... public static $result,$error; private $db,$sql_img,$sql_file,$mn,$fn,$imgall,$fileall; function __construct() { include "sis/inc/replace_inc.php"; $this->db=locator::get()->db(); $this->mn=filter($_GET['mn'],'0-9'); $this->fn=filter($_GET['fn'],'0-9'); $mn=($this->mn-1)*$_SESSION['img_page']; if ($mn<0)$mn=0; $fn=($this->fn-1)*$_SESSION['file_page']; if ($fn<0)$fn=0; $_SESSION['img_sorter']=!$_SESSION['img_sorter']?"data DESC":$_SESSION['img_sorter']; $_SESSION['file_sorter']=!$_SESSION['file_sorter']?"data DESC":$_SESSION['file_sorter']; $_SESSION['img_page']=!$_SESSION['img_page']?25:$_SESSION['img_page']; $_SESSION['file_page']=!$_SESSION['file_page']?25:$_SESSION['file_page']; $this->sql_img=$this->db->query("SELECT * FROM {$this->db->perf}_imgs ORDER BY {$_SESSION['img_sorter']} LIMIT $mn,{$_SESSION['img_page']}"); $this->sql_file=$this->db->query("SELECT * FROM {$this->db->perf}_files ORDER BY {$_SESSION['file_sorter']} LIMIT $fn,{$_SESSION['file_page']}"); $this->imgall=$this->db->result($this->db->query("SELECT COUNT(*) FROM {$this->db->perf}_imgs ")); $this->fileall=$this->db->result($this->db->query("SELECT COUNT(*) FROM {$this->db->perf}_files")); if (!$this->userrequest()){ $this->result=$this->tpl(); } } ................... ....................... ?>
вопрос, почему хранить ресурсы запросов в свойствах класса плохо??? не ужели лучше их лучше как параметры передавать? 0о или отдельные методы возвращающие запрос писать? о0 самое разумное видицо в хранении в св-вах, тем более на производительность это вроде никак не влияет...?
По сути - без разницы. Всё равно память используется. Но я бы покрайней мере сделал бы пару методов отдельных, которые бы немного разгрузили эту кашку По сути, почему лучше подгружать данные там где надо? Потому что конструктор выполняется куда раньше чем данные могут реально быть использованы. Может на данной странице вообще не выведутся картинки, а данные с базы ты тянешь. Уже плохо. Include в конструкторе - имхо некрасиво. Если он нужен 100% - require в верху файла и всё. Кешер опкода классно закеширует и будет хорошо работать.
а в том то и дело что эти данные 100% будут дальше использоваться правдо, одни в tpl() другие в userrequest().. поэтому на счёт методов , ну ведь их всё равно придётся в конструкторе вызывать... и вообще тут данных то =) 4 запроса, установка сессий в дефаулт если надо, получений номера страницы... на счёт инклуда, действительно, надо вынести =)
Чем хорошо то, что данные выбрал, вывел и уничтожил - аппликация не занимает много памяти в конкретный момент. Т.е. она всё равно перелопатит такое же кол-во данных, но пиковое использование оперативной памяти будет куда меньше, следовательно общее использование памяти на сервере будет ниже, из-за чего может отпасть необходимость добавить ещё 2 гига оперативки в сервер
Mr.M.I.T. ну, то ты сразу данные выбираешь - пусть 4 запроса. а то ты будешь выбирать данные последовательно, когда они нужны. те же 4 запроса. но, если не забывать удалять ненужное, в памяти на запрос будет не 4 результата одновременно лежать, а только 1=)