Архитектура современных сайтов на PHP
Необходимо освоить установку среды для эмуляции работы сайта в среде WAMP, LAMP, LEMP. Для этого нужно установить виртуальную машину VirtualBox, а уже на неё ставить серверную платформу.
Локальный сервер Open Server имитирует полноценную работу сервера хостера, на котором находится WINDOWS или Linux, Apache или Nginx, PHP-интерпретатор и MySQL. Делаем доступ к директории сайта с основной машины.
Создаём проект на редакторе IDE (интегрированная среда разработки - англ. Integrated Development Environment), например SUBLIME.
Основные части современного сайта:
- Front Controller
- PHP autoloader
- Composer
- PHP-роутинг (Routing)
- Пространства имен
- Config file in PHP
- MVC-структура (Model-View-Controller)
- Вёрстка с использованием Bootstrap
Front Controller
Настраиваем .htaccess так, чтобы все запросы приходили на index.php - Front Controller. Для этого в настроечном файле .htaccess указываем следующие команды:
AddDefaultCharset utf-8 RewriteEngine on RewriteCond %{REQUEST_URI} /|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #Все URL на index.php RewriteRule .* index.php [L]
PHP autoloader
Если при создании объекта класса, сам класс не был найден, автоматически срабатывает функция spl_autoload_register($nameClass), которая получает имя класса и формирует адрес для загрузки файла с классом.
А так как каждый класс хранится на отдельном файле, то такое подключение классов становится очень удобным.
<?php spl_autoload_register(function($name){ $arrPath=[//Тут может быть подключение файла с путями: Класс=>путь к файлу с Классом "$name" =>'class', "NewsClass"=>'app/news', "ShopClass"=>'app/shop', ]; $pathClass=$arrPath[$name].'/'.$name.'.php';//Путь до файла с Классом if (file_exists($pathClass)) require_once($pathClass); // Загружаем файл с классом else { echo "Хочу загрузить класс $name из $pathClass<br>\n"; throw new Exception("Невозможно загрузить $name из $pathClass<br>\n"); } }); try { //Тут пробуем создавать объекты //$obj=new NonClass(); $obj=new NewsClass2(); } catch (Exception $e) { echo $e->getMessage(), "\n"; } ?>
Config file in PHP
Нужно создать конфигурационный файл со всеми установочными данными, именами, адресами, паролями и др. необходимой информацией для сайта - все данные в одном месте. Можно создать либо через класс или конструкцию require_once() и return. Например на файле Сonfig.php:
<?php return [ 'login'=>'gen', 'password'=>123, 'name'=>'Геннадий', 'city'=>'Москва', ]; /*или так... class Config{ public $login='gen'; public $password='123'; public $name='Геннадий'; public $city='Москва'; } */ ?>
А в файле, где потребуется пишем:
<?php $d=require_once('Сonfig.php'); //$d=new Config;//или так... print_r($d); ?>