RU EN

Lada-studio. Полный стек веб-разработки. lada-studio.com
Корпоративный сайт

Корпоративный сайт

Портал для компании!
Интернет-магазин

Интернет-магазин

Современный и быстрый сайт!
Социальная сеть

Социальная сеть

Уникальные решения!
Персональный сайт

Персональный сайт

Для вашего бизнеса!

ВЕБ

Полный стек веб-разработки...

Полный стек веб-разработки...
Веб-сайт friendlystyle.ru
Веб-сайт you-paint.pro
Веб-сайт med-3.ru

НАШИ РЕШЕНИЯ PHP

Архитектурный шаблон MVC (Модель, Представление, Контроллер).

Применение архитектурного шаблона MVC (модель, представление, контроллер)... Пример кода  

Шаблон проектирования MVC разделяет данные приложения, пользовательский интерфейс и логику управления на три отдельных компонента: модель, представление и контроллер, так что каждый компонент может быть изменен независимо... Это позволяет упростить код большого приложения, сделать его понятным и структурированным, облегчить обслуживание, тестирование и повторное использование элементов!

PHP
index.php (Front controller)


// FRONT CONTROLLER
// Error settings
ini_set('display_errors',1);
//ini_set('display_errors','off');
error_reporting(E_ALL);
//error_reporting(E_NOTICE);

session_start();

// Connecting system files
define('ROOT', dirname(__FILE__));
require_once(ROOT.'/components/Autoload.php');

// Calling Router
$router = new Router(); 
$router->run();
	                     
.htaccess

AddDefaultCharset utf-8
#ErrorDocument 404 /
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php
						
Autoload.php (функция автоматического подключения к классу)

						
function my_autoloader($class_name) 
   {
    // Массив папок, в которых могут быть расположены необходимые классы
    $array_paths = array(
        '/models/',
        '/components/',
        '/controllers/',
    );
    // Проходим по массиву папок
    foreach ($array_paths as $path) {

        // Формирование имени и пути к файлу с классом
        $path = ROOT . $path . $class_name . '.php';

        // Если такой файл существует, мы подключаем его
        if (is_file($path)) {
            include_once $path;
        }
     }
   }
  spl_autoload_register('my_autoloader');						
						
Router.php (Класс для работы с маршрутами)


class Router
{
     /** массив с маршрутами @var array*/
    private $routes;
	
     /** Конструктор читает и запоминает маршруты*/
    public function __construct()
    {
     // Путь к файлу с маршрутами
        $routesPath = ROOT . '/config/routes.php';
     // Получаем маршруты из файла
        $this->routes = include($routesPath);
    }
	
     /** Возвращает строку запроса*/
    private function getURI()
    {
        if (!empty($_SERVER['REQUEST_URI'])) {
            return trim($_SERVER['REQUEST_URI'], '/');
        }
    }
	
     /** Метод для обработки запроса*/
    public function run()
    {
     // Получаем строку запроса
        $uri = $this->getURI();
     // Проверяем наличие такого запроса в массиве маршрутов (routes.php)
        foreach ($this->routes as $uriPattern => $path) {
     // Сравниваем $uriPattern и $uri
            if (preg_match("~$uriPattern~", $uri)) {
     // Получаем внутренний путь из внешнего согласно правилу (регулярное выражение)
                $internalRoute = preg_replace("~$uriPattern~", $path, $uri);
     // Определяем контроллер, метод (action) и параметры запроса
                $segments = explode('/', $internalRoute);
     // Получаем имя контроллера
                $controllerName = array_shift($segments) . 'Controller';
                $controllerName = ucfirst($controllerName);
     // Определяем action
                $actionName = 'action' . ucfirst(array_shift($segments));
                $parameters = $segments;
     // Подключаем файл класса-контроллера
                $controllerFile = ROOT . '/controllers/' .
                $controllerName . '.php';
                if (file_exists($controllerFile)) {
                    include_once($controllerFile);
                }
     // Создаем объект контроллера
                $controllerObject = new $controllerName;
     /* Вызываем необходимый метод ($actionName) у определенного 
      * класса ($controllerObject) с заданными ($parameters) параметрами
      */
                $result = call_user_func_array(array($controllerObject, $actionName), $parameters);
     // Если метод контроллера успешно вызван, завершаем работу роутера
                if ($result != null) {
                    break;}
            }
        }
    }
}
						
routes.php (пример массива с маршрутами)


return array(
/** Здесь мы пишем маршруты (!!! применяя регулярные выражения)...
 * Примеры:
 * 'confirm/([0-9a-z]+)' => 'user/confirm_email/$1',
 * 'news/update/([0-9]+)/([0-9]+)' => 'news/update_news/$1/$2',
 */

// Маршрут для главной страницы сайта
'index.php' => 'site/index', // actionIndex в SiteController
'' => 'site/index', // actionIndex в SiteController
);
						
SiteController.php (пример контроллера)


class SiteController
{
/**
 * Action для главной страницы сайта
 */
	public function actionIndex()
	{
	// Получаем данные из модели
	$data = Site::getData();
	// Подключаем представление (вид)
	require_once(ROOT . '/views/site/index.php');
	return true;
	}
}						
						
Модель взаимодействует с базой данных. Получает данные и производит с ними необходимые действия.


/**
 * Класс Site - модель для SiteController
 */
class Site
{
public static function getData()
   {
      // подключение к базе данных 
      // выполнение запроса к базе данных
      // получение и возврат результатов
   }
}						
						
Здесь представлен пример реализации архитектурного шаблона MVC на языке программирования PHP... Обязательно применяйте методику разработки программного обеспечения, предотвращающую внедрение уязвимостей, обеспечивающую устойчивость к воздействию вредоносных программ и несанкционированному доступу!