<?php
class Sender {
public $provider;
public function __construct(Sendable $provider){
$this->provider = $provider;
}
public function send(){
$this->provider->sendAnswer();
}
}
$provider = new SmsAnswerProvider();
$sender = new Sender($provider);
$sender->send();
class Router {
public $routes;
public function __construct(){
$this->routes = include(ROOT.'/routing/routes.php');
}
private function getURI(){
if(!empty($_SERVER['REQUEST_URI'])){
return trim($_SERVER['REQUEST_URI'], '/');
}
}
public function Run(){
$uri = $this->getURI();
foreach($this->routes as $route){
if($route['uri'] === $uri){
//Узнаем имя контроллера и экшена:
$controllerName = $route['controller'];
$actionName = $route['action'];
//Назначаем имя файлу контроллера:
$controllerFileName = $controllerName . 'Controller.php';
//print_r("Имя контроллера: ". $controllerName . "<br>" . " Имя экшена: ". $actionName);
//Подключаем файл контроллера:
include ROOT . '/controllers/'.$controllerFileName;
//Создаем класс контроллера:
$controllerObject = new $controllerName;
//Вызываем метод класса контроллера:
$result = $controllerObject->$actionName();
}
}
}
}
Экшн там может быть только один- нет.
<?php
//Подключаем Модель - Новости
include_once ROOT . '/models/News.php';
class NewsController{
// Получаем список всех новостей
public function actionIndex()
{
$newsList = array();
$newsList = News::getNewsList();
// Подключаем Вид, он принимает переменную $newsList и выводит список новостей
require_once(ROOT . '/views/news/index.php');
return true;
}
// Получаем одну новость по id
public function actionView($id)
{
if($id){
$newsItem = News::getNewsItemById($id);
require_once(ROOT . '/views/news/view.php');
return true;
}
}
}
$this->page
$this -> page
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);