Архитектура современных сайтов на 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);
?>


