Узнал недавно про существование паттерна для работы с БД DataMapper, решил попробовать реализовать. Модель: Код (PHP): <span class="syntaxdefault">class model_user_dm<br /></span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> private $user_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $user_name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $password </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> function set_user_name</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user_name</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user_name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_user_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user_id</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user_id</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> echo $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_id</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_name</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_password</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$password</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">password </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $password</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_password</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">password</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br />} </span><span class="syntaxdefault"></span> Маппер: Код (PHP): <span class="syntaxdefault">class mapper_user<br /></span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> protected $pdo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> protected $users </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> function __construct</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pdo</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $pdo</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_users</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">model_user_dm $users</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">users </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $users</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_by_id</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT * FROM users WHERE id = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_id</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'"'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $r </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$r </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $res </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $r</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NUM</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">//echo $query;<br /></span><span class="syntaxdefault"> return $res</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> return null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br />} </span><span class="syntaxdefault"></span> Принцип работы: Код (PHP): <span class="syntaxdefault"><br />$db </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new db</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">DB_NAME</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> DB_PASSWORD</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> DB_USER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> DB_HOST</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> $conn </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $db</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Connect</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault"> $model_user </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new model_user_dm</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault"> $mapper </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new mapper_user</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$conn</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault"> $mapper</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_users</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$model_user</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault"> print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$mapper</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_by_id</span><span class="syntaxkeyword">());<br /> </span><span class="syntaxdefault"></span> Выводит Array ( [0] => Array ( [0] => 2 [1] => user [2] => 40bd001563085fc35165329ea1ff5c5ecbdbbeef [3] => 2 [4] => NoNameUser ) ) Все как бы работает, но что то мне не нравится. Подскажите правильно ли я делаю, или все совсем не так?
Где массив user? У меня тут вроде единственный массив это результат функции get_user_by_id. Я может вопрос не правильный задал. Правильна ли будет такая реализация паттерна DataMapper, или то что я написал к нему ни какого отношения не имеет?
Что за класс DB тоже непонятно. Вот реально, имеет значение для примера с маппером что у тебя в отдельном классе создается экземпляр PDO? Не думаю! А зачем ты это здесь изобразил? К тому же ты не к месту применил PdoStatesment::fetchAll. у тебя же одна запись считывается, при чем тут "all" ? Предназначение маппера скрывать особенности отображения объекта на базу. У тебя нет метода получения объекта из базы. Незачет! Добавлено спустя 1 минуту 12 секунд: Ну. А объект где? Незачет! Добавлено спустя 4 минуты 48 секунд: Глянь вот этот пример: http://stackoverflow.com/a/20820497/272885
Ну вот, об этом и спрашивал. То есть get_user_by_id должен получить данные юзера и записать в класс User_model и уже из User_model можно будет брать данные пользователя?
Давно хотел спросить. Зачем создавать private свойства и для них потом public функции, с помощью которых можно менять значения этих свойств. Вопрос не только к ТС, а ко всем кому не лень ответить. Ответ типа это инкапсуляция не принимается )
например Код (PHP): <span class="syntaxdefault"><br />function set_user_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user_id</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user_id </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">b</span><span class="syntaxkeyword">]+</span><span class="syntaxdefault"> 10</span><span class="syntaxkeyword">[/</span><span class="syntaxdefault">b</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"></span> в методе можно описать логику установки свойства
Так должно быть? модель: Код (PHP): <span class="syntaxdefault"><br />class model_users<br /></span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> private $table_name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'users'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $login </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $password </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $email </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $role_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> function get_table_name</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">table_name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$id</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_id</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_name</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_name</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"></span> маппер Код (PHP): <span class="syntaxdefault"><br />class users_mapper<br /></span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> private $users </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $pdo</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> function __construct</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pdo</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $pdo</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_users</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">model_users $user</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">users </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_by_id</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT users.id, users.name, users.login, users.email, users.password, roles.name as role'<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">' FROM users, roles '<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">'WHERE users.role_id = roles.id and '<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">'users.id = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">users</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_id</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'"'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> $query_res </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NAMED</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> $res </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $query_res</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">users</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">users</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_name</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br />}<br /></span><span class="syntaxdefault"></span> использование Код (PHP): <span class="syntaxdefault"><br /> $model_users </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new model_users</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault"> $model_users</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_id</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'2'</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault"> $users_mapper </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new model_users_mapper</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$db</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Connect</span><span class="syntaxkeyword">());<br /><br /></span><span class="syntaxdefault"> $users_mapper</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_users</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$model_users</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault"> $users_mapper</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_by_id</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault"> echo $model_users</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_name</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault"></span> но это если одного пользователя выбрать, а если всех, куда их писать? а если из двух таблиц надо данные выбрать? две модели создавать и два маппера?
Если всех, датамаппер должен возвращать массив объектов User. Суть паттерна - специальный класс Mapper, который переводит записи из таблицы в объекты классов. Хотя я больше с ActiveRecord привык работать, поскольку он и в фреймворке Kohana, на котором я раньше писал, и в фреймворке Yii2, на котором пишу сейчас. Doctrine2 что-то у меня положительных эмоций не вызвала...
ок, массив объектов понятно, а если из двух таблиц выбрать? допустим есть таблица roles id | name таблица users id | name | pass | role_id запрос select users.id, users.name, roles.name as roles from users, roles where users.role_id = roles.id
Ну поищите инфу, как DataMapper работает со связанными сущностями. Тут я без понятия, я его не использую в своей работе. Добавлено спустя 4 минуты 2 секунды: С другой стороны, ИМХО, никто не мешает мапить более одной таблицы на один объект.
Да я искал, в основном описание в один абзац и маленький пример, а где то и вообще без примера. Может на англоязычных ресурсах что то есть но у меня с английским плохо )) Вот и остается на форуме спрашивать Добавлено спустя 1 минуту 4 секунды: Да я искал, в основном описание в один абзац и маленький пример, а где то и вообще без примера. Может на англоязычных ресурсах что то есть но у меня с английским плохо )) Вот и остается на форуме спрашивать
Alex_1984, ты отрываешся от цели. твой вопрос про несколько таблиц не имеет смысла. это именно то, что должен прятать в себе маппер — неважно на сколько таблиц это проецируется и вообще есть ли таблицы, может быть там nosql или файловое хранилище внутри — это для всего остального мира черный ящик. принципиальное отличие DM от AR именно в большем уровне абстрагирования от способа хранения. объект Active Record — это запись в таблице. объект предметной области в DM это что угодно. твой класс по прежнему неполон. чтение одного экземпляра вроде есть, а его сохранение где? и неужели чтения по id достаточно для всех задач?
О, поутряне на трезвую голову заметил. Это вообще изврат какой-то.... DataMapper должен сам создавать объект, сам его заполнять, сам возвращать, а у вас что-то получается совсем уж странное Код (PHP): function get_by_id($id) { $query = 'SELECT users.id, users.name, users.login, users.email, users.password, roles.name as role' . ' FROM users, roles ' . 'WHERE users.role_id = roles.id and ' . 'users.id = "'. ((int)$id) .'"'; $query_res = $this->pdo->query($query) $result = $query_res->fetch(PDO::FETCH_ASSOC); $user = new model_users; $user->set_id($result["id"]); $user->set_name($result["name"]); return $user; } Что-то в этом роде должно быть (ну это на очень скорую руку, конечно)
Такой пример нашел )) в нем создавалась модель, передавалась в маппер и в нем заполнялась немного доделал Код (PHP): <span class="syntaxdefault"><br />Модель<br /><br />class model_user<br /></span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> private $user_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $user_name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $password </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $user_login </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $role </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $role_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $table_name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'users'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> private $related_table_name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'roles'</span><span class="syntaxkeyword">;<br /><br /><br /></span><span class="syntaxdefault"> function set_user_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user_id</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user_id</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> echo $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_id</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_user_name</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user_name</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user_name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_name</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_user_login</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user_login</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_login </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user_login</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_login</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">user_login</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_password</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$password</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">password </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $password</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_password</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">password</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_role</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$role</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">role </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $role</span><span class="syntaxkeyword">;<br />}<br /><br /></span><span class="syntaxdefault"> function get_role</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">role</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function set_role_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$role_id</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">role_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $role_id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_role_id</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">role_id</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_table_name</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">table_name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_related_table_name</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">related_table_name</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br />}</span><span class="syntaxdefault"> <br /></span> Код (PHP): <span class="syntaxdefault"><br />Маппер<br />class mapper_user<br /></span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> protected $pdo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> function __construct</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pdo</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $pdo</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_by_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">model_user $user</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT users.id, users.name, users.login, users.password, users.role_id, roles.name as role<br /> FROM '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">', '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_related_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'<br /> WHERE users.id = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_id</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'" and users.role_id = roles.id'</span><span class="syntaxkeyword">;<br /><br /><br /></span><span class="syntaxdefault"> $user </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new model_user</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">//echo $query;<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $r </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$r </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /><br /><br /></span><span class="syntaxdefault"> $res </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $r</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NAMED</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_name</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_login</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_password</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'password'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_role</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'role'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> return $user</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_user_by_login</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">model_user $user</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT users.id, users.name, users.login, users.password, users.role_id, roles.name as role<br /> FROM '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">', '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_related_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'<br /> WHERE users.login = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_login</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'" and users.role_id = roles.id'</span><span class="syntaxkeyword">;<br /><br /><br /></span><span class="syntaxdefault"> $user </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new model_user</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">//echo $query;<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $r </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$r </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $res </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $r</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NAMED</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_name</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_login</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_password</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'password'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_role</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'role'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> return $user</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function get_users</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">model_user $user</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT users.id, users.name, users.login, users.password, users.role_id, roles.name as role<br /> FROM '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">', '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_related_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'<br /> WHERE users.role_id = roles.id'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $r </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> $res </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $r</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NAMED</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault"> $users </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault"> foreach</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res as $user</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $model_user </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new model_user</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_login</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'login'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_password</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'password'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_role</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'role'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_role_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'role_id'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_user_name</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]);<br /><br /></span><span class="syntaxdefault"> array_push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$users</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $model_user</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> return $users</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault"> function save</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">model_user $user</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_id</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_role</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $role </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_role</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> else<br /> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $role </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'user'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT id FROM '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_related_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">' WHERE name = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$role</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'"'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $r </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> $res_role_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $r</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NAMED</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_role_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res_role_id</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]);<br /><br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">//echo $this->user->get_role_id();<br /><br /></span><span class="syntaxdefault"> $query_update </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'UPDATE '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">' SET login = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_login</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'", password = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_password</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'",<br /> role_id = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_role_id</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'", name = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'" WHERE id = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_id</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'"'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> echo $query_update</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query_update</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> else<br /> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $role </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_role</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $role </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_role</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> else<br /> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $role </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'user'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT id from '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_related_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">' WHERE name = "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$role</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'"'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> echo </span><span class="syntaxstring">'<br>'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $r </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> $res_role_id </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $r</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NAMED</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> $user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">set_role_id</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$res_role_id</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]);<br /><br /></span><span class="syntaxdefault"> $insert_query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'INSERT INTO '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_table_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">' (login, password, role_id, name)<br /> VALUES ("'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_login</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'", "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_password</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'", "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_role_id</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'", "'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_user_name</span><span class="syntaxkeyword">().</span><span class="syntaxstring">'")'</span><span class="syntaxkeyword">;<br /><br /><br /></span><span class="syntaxdefault"> echo </span><span class="syntaxstring">'<br>'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$insert_query</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> null</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">pdo</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$insert_query</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /><br />}<br /><br /> </span><span class="syntaxdefault"></span>
Изолируй функционал по соответствующим классам. Это ООП Каждый класс отвечает за свою узкую задачу. Никаких echo в Маппере! Не надо классу Пользователь знать имена таблиц!
Ну echo это я себе текст запросов выводил )) Таблицы уберу. А вот это не понял, сейчас вроде каждый класс за свою задачу и отвечает
Alex_1984, а зачем ты лишний шаг делаешь? Почему чтоб твоим маппером воспользоваться, я должен сначала создать одну модель "пользователь", потом установить её id, потом передать её в твой маппер, потом получить из него другую. В моём варианте я сразу передаю id в маппер, и получаю модель. Не надо лишних шагов. Код должен быть простым по возможности, очень очевидным.
У меня названия таблиц были в модели, переделал уже. А вообще DataMapper я так понял больше подойдет для больших проектов в которых данные могут храниться в разных источниках, получается очень много текста на одну маленькую табличку. У меня все проще было, в одном классе как бы шаблоны Код (PHP): <span class="syntaxdefault"> <br /></span><span class="syntaxkeyword">function </span><span class="syntaxdefault">__construct</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$pass</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$host</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_name </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_password </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$pass</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_user </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_host </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$host</span><span class="syntaxkeyword">;<br /> }<br /><br /> function </span><span class="syntaxdefault">Connect</span><span class="syntaxkeyword">()<br /> {<br /> </span><span class="syntaxdefault">$connection </span><span class="syntaxkeyword">= new </span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"mysql:host=</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_host</span><span class="syntaxstring">;dbname=</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_name</span><span class="syntaxstring">"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_user</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db_password</span><span class="syntaxkeyword">);<br /> return </span><span class="syntaxdefault">$connection</span><span class="syntaxkeyword">;<br /> }<br /><br /> function </span><span class="syntaxdefault">Select</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$select</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$from</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$leftjoin </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$on </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$orderby </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$groupby </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$query </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">select_builder</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$select</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$from</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$leftjoin</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$on</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$orderby</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$groupby</span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault">$qr </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Connect</span><span class="syntaxkeyword">();<br /><br /> </span><span class="syntaxdefault">$r </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$qr</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /><br /> if(</span><span class="syntaxdefault">$r </span><span class="syntaxkeyword">!= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$res </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$r</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">FETCH_NUM</span><span class="syntaxkeyword">);<br /> return </span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">;<br /> }<br /> return </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">;<br /> }<br /><br /> function </span><span class="syntaxdefault">Insert</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$insertinto</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$columns</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$values</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$query </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">insert_builder</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$insertinto</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$columns</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$values</span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault">$qr </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Connect</span><span class="syntaxkeyword">();<br /> </span><span class="syntaxdefault">$qr</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /> return </span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">;<br /> }<br /><br /> function </span><span class="syntaxdefault">Update</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$update</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$set</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$query </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">update_builder</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$update</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$set</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where</span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault">$qr </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Connect</span><span class="syntaxkeyword">();<br /> </span><span class="syntaxdefault">$qr</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">);<br /> return </span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">;<br /> }<br /><br /> function </span><span class="syntaxdefault">Delete</span><span class="syntaxkeyword">()<br /> {<br /><br /> }<br /><br /> private function </span><span class="syntaxdefault">select_builder</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$select</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$from</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$leftjoin </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$on </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$orderby </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$groupby </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$SELECT </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'SELECT '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$FROM </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' FROM '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' WHERE '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$LEFTJOIN </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' LEFT JOIN '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$ON </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' ON '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$ORDERBY </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' ORDER BY '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$GROUPBY </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' GROUP BY '</span><span class="syntaxkeyword">;<br /> foreach(</span><span class="syntaxdefault">$select </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$sel</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$SELECT</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$sel</span><span class="syntaxkeyword">.</span><span class="syntaxstring">', '</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">$SELECT </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$SELECT</span><span class="syntaxkeyword">, </span><span class="syntaxstring">', '</span><span class="syntaxkeyword">);<br /> foreach(</span><span class="syntaxdefault">$from </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$fr</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$FROM</span><span class="syntaxkeyword">.=</span><span class="syntaxdefault">$fr</span><span class="syntaxkeyword">.</span><span class="syntaxstring">', '</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">$FROM </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$FROM</span><span class="syntaxkeyword">, </span><span class="syntaxstring">', '</span><span class="syntaxkeyword">);<br /> if(</span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">!= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> foreach (</span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$value </span><span class="syntaxkeyword">. </span><span class="syntaxstring">' and '</span><span class="syntaxkeyword">;<br /> }<br /><br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'and'</span><span class="syntaxkeyword">);<br /> }<br /> if(</span><span class="syntaxdefault">$leftjoin </span><span class="syntaxkeyword">!= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> foreach(</span><span class="syntaxdefault">$leftjoin </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$lj</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$LEFTJOIN</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$lj</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' '</span><span class="syntaxkeyword">;<br /> }<br /><br /> foreach(</span><span class="syntaxdefault">$on </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$onkey</span><span class="syntaxkeyword">=></span><span class="syntaxdefault">$onvalue</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$ON</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$onkey</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'='</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$onvalue</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' '</span><span class="syntaxkeyword">;<br /> }<br /> }<br /> if(</span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">!= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> if(</span><span class="syntaxdefault">$leftjoin </span><span class="syntaxkeyword">!= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$SELECT</span><span class="syntaxkeyword">.=</span><span class="syntaxdefault">$FROM</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$LEFTJOIN</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$ON</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">;<br /> }<br /> else<br /> {<br /> </span><span class="syntaxdefault">$SELECT </span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$FROM </span><span class="syntaxkeyword">. </span><span class="syntaxstring">' ' </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">;<br /> }<br /> }<br /> else<br /> {<br /> </span><span class="syntaxdefault">$SELECT</span><span class="syntaxkeyword">.=</span><span class="syntaxdefault">$FROM</span><span class="syntaxkeyword">;<br /> }<br /> return </span><span class="syntaxdefault">$SELECT</span><span class="syntaxkeyword">;<br /> }<br /><br /> private function </span><span class="syntaxdefault">insert_builder</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$insertinto</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$columns</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$values</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$INSERTINTO </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'INSERT INTO '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$VALUES </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'VALUES'</span><span class="syntaxkeyword">;<br /><br /> </span><span class="syntaxdefault">$INSERTINTO</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$insertinto</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$COLUMNS </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'('</span><span class="syntaxkeyword">;<br /> foreach(</span><span class="syntaxdefault">$columns </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$col</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$COLUMNS</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$col</span><span class="syntaxkeyword">.</span><span class="syntaxstring">','</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">$COLUMNS </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$COLUMNS</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$COLUMNS </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$COLUMNS</span><span class="syntaxkeyword">, </span><span class="syntaxstring">','</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$COLUMNS</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">') '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$VALUES</span><span class="syntaxkeyword">.= </span><span class="syntaxstring">'('</span><span class="syntaxkeyword">;<br /><br /> foreach(</span><span class="syntaxdefault">$values </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$VALUES</span><span class="syntaxkeyword">.= </span><span class="syntaxstring">'"'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'",'</span><span class="syntaxkeyword">;<br /> }<br /><br /> </span><span class="syntaxdefault">$VALUES </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$VALUES</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$VALUES </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$VALUES</span><span class="syntaxkeyword">, </span><span class="syntaxstring">','</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$VALUES</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">')'</span><span class="syntaxkeyword">;<br /><br /> </span><span class="syntaxdefault">$INSERTINTO</span><span class="syntaxkeyword">.=</span><span class="syntaxdefault">$COLUMNS</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$VALUES</span><span class="syntaxkeyword">;<br /><br /> return </span><span class="syntaxdefault">$INSERTINTO</span><span class="syntaxkeyword">;<br /> }<br /><br /> private function </span><span class="syntaxdefault">delete_builder</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$delete</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$DELETE_FROM </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'DELETE FROM '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' WHERE '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$DELETE_FROM</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$delete</span><span class="syntaxkeyword">;<br /> foreach(</span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">=></span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">$DELETE_FROM</span><span class="syntaxkeyword">.=</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">;<br /> return </span><span class="syntaxdefault">$DELETE_FROM</span><span class="syntaxkeyword">;<br /> }<br /><br /> private function </span><span class="syntaxdefault">update_builder</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$update</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$set</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$UPDATE </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'UPDATE '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$SET </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' SET '</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' WHERE '</span><span class="syntaxkeyword">;<br /> foreach(</span><span class="syntaxdefault">$update </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$upd_val</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$UPDATE</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$upd_val</span><span class="syntaxkeyword">.</span><span class="syntaxstring">','</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">$UPDATE </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$UPDATE</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$UPDATE </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$UPDATE</span><span class="syntaxkeyword">, </span><span class="syntaxstring">','</span><span class="syntaxkeyword">);<br /> foreach(</span><span class="syntaxdefault">$set </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$set_key </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$set_val</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$SET</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$set_key</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'='</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$set_val</span><span class="syntaxkeyword">.</span><span class="syntaxstring">','</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">$SET </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$SET</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$SET </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$SET</span><span class="syntaxkeyword">, </span><span class="syntaxstring">','</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$SET </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$SET</span><span class="syntaxkeyword">;<br /> if(</span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">!= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">)<br /> {<br /> foreach (</span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$where_key </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$where_val</span><span class="syntaxkeyword">) {<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$where_key</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$where_val </span><span class="syntaxkeyword">. </span><span class="syntaxstring">','</span><span class="syntaxkeyword">;<br /> }<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">, </span><span class="syntaxstring">','</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$WHERE </span><span class="syntaxkeyword">= </span><span class="syntaxstring">' '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">;<br /> return </span><span class="syntaxdefault">$UPDATE</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$SET</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">;<br /> }<br /> return </span><span class="syntaxdefault">$UPDATE</span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">$SET</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$WHERE</span><span class="syntaxkeyword">;<br /> }<br />} <br /> </span><span class="syntaxdefault"></span> и модели такого вида Код (PHP): <span class="syntaxdefault"><br /></span><span class="syntaxkeyword">class </span><span class="syntaxdefault">model_navigation<br /></span><span class="syntaxkeyword">{<br /> private </span><span class="syntaxdefault">$db </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">null</span><span class="syntaxkeyword">;<br /><br /> function </span><span class="syntaxdefault">__construct</span><span class="syntaxkeyword">()<br /> {<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db </span><span class="syntaxkeyword">= new </span><span class="syntaxdefault">db</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">DB_NAME</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">DB_PASSWORD</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">DB_USER</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">DB_HOST</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Connect</span><span class="syntaxkeyword">();<br /> }<br /><br /> function </span><span class="syntaxdefault">get_navigation</span><span class="syntaxkeyword">()<br /> {<br /> </span><span class="syntaxdefault">$select </span><span class="syntaxkeyword">= array(</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'categories'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'description'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'parent'</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$from </span><span class="syntaxkeyword">= array(</span><span class="syntaxstring">'navigation'</span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault">$res </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">$select</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$select</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$from</span><span class="syntaxkeyword">);<br /><br /> return </span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">;<br /> }<br /><br /> function </span><span class="syntaxdefault">set_navigation_item</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$description</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$categories</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$parent</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$insert </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'navigation'</span><span class="syntaxkeyword">;<br /> </span><span class="syntaxdefault">$columns </span><span class="syntaxkeyword">= array(</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'description'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'categories'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'parent'</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$set </span><span class="syntaxkeyword">= array(</span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$description</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$categories</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$parent</span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault">$res </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Insert</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$insert</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$columns</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$set</span><span class="syntaxkeyword">);<br /><br /> return </span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">;<br /> }<br /><br /> function </span><span class="syntaxdefault">edit_navigation_item</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$id</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$description</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$categories</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$parent</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$update </span><span class="syntaxkeyword">= array(</span><span class="syntaxstring">'navigation'</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$set </span><span class="syntaxkeyword">= array(</span><span class="syntaxstring">'name' </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'description' </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$description</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'categories' </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$categories</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'parent' </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$parent</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$where </span><span class="syntaxkeyword">= array(</span><span class="syntaxstring">'id = ' </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$id</span><span class="syntaxkeyword">);<br /><br /> </span><span class="syntaxdefault">$res </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">db</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Update</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$update</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$set</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$where</span><span class="syntaxkeyword">);<br /><br /> return </span><span class="syntaxdefault">$res</span><span class="syntaxkeyword">;<br /> }<br />} <br /> </span><span class="syntaxdefault"></span> наверно так не правильно, за то проще ))
Для скриптов вроде Hello World однозначно не подходит. ООП вообще поначалу создает впечатление избыточности, но по мере усложнения проекта профит от разделения задач начинает увеличиваться. Кроме того, можно ведь выделить какие-то универсальные моменты и не писать свой маппер с нуля на каждый класс-сущность. Вот например мои эксперименты: viewtopic.php?t=48187
Ну я честно говоря не пытался реализовать свой ORM (DataMapper или ActiveRecord), поскольку уже столько всего готового разными умными людьми сделано, для задач, с которыми я по работе сталкиваюсь, мне с головой хватает. Причём, я всегда читаю код используемых фреймворков, поэтому имею представление, что там и как происходит. DataMapper мне тоже немного многословным кажется, хотя это больше соответствует принципам SOLID. Недавно мне попалась книга про программирование на фреймворке Yii2 от одного из его создателей, и там совсем забавную штуку он делает в примере приложения, которое разрабатывает по ходу книги. Он, фактически, создаёт DataMapper над ActiveRecord, реализованном в Yii2. Аргументируя тем, что вдруг ему завтра AR станет слишком медленным или из Yii3 его выпилят. А так он только репозиторий перепишет, а классы останутся. Так что своя правда тут есть. А если уж хочется самому, то да, надо что-то разрабатывать обобщённое, что из проекта в проект можно будет носить, как artoodetoo сделал.
Посмотрел я его ссылку и понял что от helloWorld недалеко ушел )) Учусь пока что. Что то новое для себя увидел, решил посмотреть как это делается. В общем буду дальше разбираться.
Невнимательно посмотрели. Там много чего интересного реализовано. Тот же DataMapper. Да и вообще, целый фреймворк с контроллерами и прочим. В принципе, можно готовое приложение поднимать.
Ну коли не поняли - проясните. Что такое MVC, что такое DataMapper, доки проработайте, если по языку что не понятно - проясните по языку. Всё равно играетесь большей частью - попробуйте что-нибудь реализовать на этом фреймворке. Это очень полезно код таких программистов, как artoodetoo читать. Мне и самому захотелось, только время найти надо ))