Для того чтобы научиться программировать нужно пробовать программировать самые простые, но функциональные вещи. Чтобы лучше понять как сделать «свой первый самый лучший в мире» сайт — рассмотрим пример элементарного сайта из одного уровня объектов — страниц. Нам нужно
1) создать базу данных с таблицей страницсделано- 2) создать страницы редактирования страниц:
списоксделан, осталось добавление, редактирование - 3) создать отображение страниц из базы на сайте
Готовый код, по которому будет идти рассказ что где и почему. Пример простейшего сайта с админкой в связке 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