alx4ever, я пишу только то что видел лично. А видел я и передачи объектов по ссылке (зачем? видимо осталось от 4ки) и кучу plain SQL'а с повсеместным использованием $_GET и доморощенным экранированием.
И чтобы не быть голословным, открываю первый попавшийся класс mod/page/Page.php
public function __construct($data = array(), $site) { <<<<<<<<<<<-------- а тут неплохо бы передать тип Site $site ?
$this->order = 'id';
$this->by = 'DESC';
$this->where = '';
$this->offset = 0;
$this->limit = 20;
foreach ($data as $k => $v) {
$this->$k = $v;
}
$this->site =& $site; <<<<<<<<<<---------------- зачем?
$this->url = $this->site->getURL();
$this->table = 'pages';
$this->url = getURL(array('activate_'.$this->table,'deactivate_'.$this->table,'delete_'.$this->table),true);
if ($this->site->isUser('admin')) $this->actions();
}
private function actions() {
if ($_GET['activate_'.$this->table]) {
dbExecute('UPDATE '.$this->table.' SET active=\'1\' WHERE id='.(int)$_GET['activate_'.$this->table].(!$this->site->isUser('admin')?' AND userid='.(int)$_SESSION['UseriD']:'')); <<<<<<<<<<<<<<------------ куча SQL'а
}
elseif ($_GET['deactivate_'.$this->table]) {
dbExecute('UPDATE '.$this->table.' SET active=\'0\' WHERE id='.(int)$_GET['deactivate_'.$this->table].(!$this->site->isUser('admin')?' AND userid='.(int)$_SESSION['UseriD']:''));
}
elseif ($_GET['delete_'.$this->table]) {
dbExecute('DELETE FROM '.$this->table.' WHERE id='.(int)$_GET['delete_'.$this->table].(!$this->site->isUser('admin')?' AND userid='.(int)$_SESSION['UseriD']:''));
}
}
а так же куча html кода для админских ф-ций.
Да, в целом всё очень компактно, для обычной CMS и даже странно что оно работает.
PyPL,
Для бд я смотрю у тебя чтото похожее на ActiveRecord паттерн, но ORM эффективней
Поверь, там даже AR не пахнет. AR умеет Zend Framework, а ближе всего к ORM именно Doctrine
alx4ever,
И какой PHP4?? У меня всё объектно ориентированное. Сайт открывал? Видел как всё быстро работает?
Поверь, это не ООП. У тебя объекты - это контейнеры для функций. Сайт может быстро работать и с мегабайтами кода (для этого есть оптимизаторы и кеширование), железо нынче дешевле рабочей силы.
Я был бы рад услышать ещё объективных мнений по поводу кода
Да, если запустить твой CMS думаю вывалится добрая сотня Notice'в и Strict...
if ($_GET['activate_'.$this->table]) {
Сообщение изменено: Setor (20 ноября 2010 - 21:46 )