PHP + AngularJS: Первый сайт не комом. Часть 2.2 Админ часть добавление в базу данных

Для того чтобы научиться программировать нужно пробовать программировать самые простые, но функциональные вещи. Чтобы лучше понять как сделать «свой первый самый лучший в мире» сайт — рассмотрим пример элементарного сайта из одного уровня объектов — страниц. Нам нужно

Готовый код, по которому будет идти рассказ что где и почему. Пример простейшего сайта с админкой в связке PHP + AngularJS, первая часть описания

Форма добавления со стороны браузера

На списке страниц поставим кнопку

Привяжем действие в роутере

Создадим контроллер

И собственно сама форма

Форма добавления со стороны базы данных

Собственно главное в этой статье! Если до этого Вы уже по схеме предыдущей знаете куда файлы разбросать, то теперь, наконец-то, мы сделаем интеграцию с пхп и базой данных. Что же скрывается за постом на ссылку api/pages/add.json?

Роутинг ПХП

Для передачи «псевдоурла» мы создаем файл роутер Наша Админка/api/.htaccess

RewriteEngine on
RewriteRule ^.htaccess$ - [F]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /Наша админка/api/index.php?q=$1 [L,QSA]

И его перехватчик Наша Админка/api/index.php. Обращаю Ваше внимание — подключается файл высоко вверху — это где наши главные пхп файлы лежат, я вообще в паблик, доступный снаружи не люблю код выкладывать классов и тд. Хорошая привычка, если есть возможность — то убирайте вовсе. Подробнее тут

Router::route — маленький простой роутер, первый параметр это запрос, второй неймспейс из которого брать контроллеры, и третий — контроллер по умолчанию. Код роутера я цитировать не буду — он есть в общем архиве, главная идея — по запросу взять что мы хотим выполнить cp\api\Pages->add

Контроллер для работы с БД

Так как мы не только страницы потом хотим обрабатывать, то сразу выделим главный контроллер. ООП страшная штука.
!app\cp\api\libs\ ApiController.class.php

Главная задача нашего контроллера страниц теперь — сказать чем он отличается от любого другого контроллера) А что наследует.
!app\cp\api\controllers\PagesController.class.php

Модель для работы с БД

Для всех таблиц очень похожая логика, только разные поля, поэтому мы опять поиграем в ООП на похожих моделях. Применяемый тут класс DB также есть в полных исходниках, а о логике его создания можно прочитать в описании его очень ранней версии. Почему я против PDO я попробую описать отдельно, но примите как факт — если Вы используете чужую магию вместо прямых и красивых sql, то теряете не только производительность и стабильность, а еще и рискуете налететь на мегабаги PDO при масштабировании базы.

И опять у нас очень маленький класс-наследник, только с настройками
!app\cp\api\libs\Page.class.php

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">