2016-09-21 2 views
0

Это мой длинный квест для разработки веб-приложений с использованием основного PHP и соблюдения наилучших возможных практик, а не использования фреймворка. Я многое сделал, структурируя свой проект лучше. Однако ... получение чистого URL-адреса часто является проблемой для крупных приложений.Создание веб-приложения PHP с нуля с использованием Slim as Architecture

До сих пор ... Я использовал Slim Framework только для создания RESTFUL-сервисов вне своих веб-приложений.

Я использую Slim Framework для создания API-интерфейсов для проекта PHP. Теперь у меня есть установка Slim и работает нормально. У меня есть мои маршруты, которые говорят с базой данных и делают то, что они должны делать, в общем. Мой вопрос связан с модуляцией кода. На данный момент все мои маршруты определены в моем файле index.php в корневом каталоге. Я бы очень хотел отделить их, скажем, в папку/контроллеры.

Как мне понравилось, как Slim делает неплохие URL-адреса ... Мне интересно, можно ли использовать Slim как мою архитектуру приложений ... и пусть все мои страницы или API будут доступны через Slim index.php.

+0

Вы можете проверить один из скелетов Slim для вдохновения. –

ответ

1

Да, довольно легко вот шаги, которые я предпринял по недавнему проекту.

Первый позволяет сказать ваш есть HomeActionController

class HomeActionController { 

    //The below line I have moved into an abstract Controller class 
    public $view = null; 

    //This is using Slim Views PhpRenderer 
    //This allows for a controller to render views can be whatever you need 
    //I did not like the idea of passing the whole DC it seemed overkill 
    //The below method I have moved into an abstract Controller class 
    public function __construct(\Slim\Views\PhpRenderer $view = null){   
     if($view != null){ 
      $this->view = $view; 
     } 
    } 

    //View could be any action method you want to call it. 
    public function view(Request $request, Response $response, array $args){ 
     $data['user'] = "John Doe"; 
     return $this->view->render($response, 'templates/home.php', $data); 
    } 
} 

Теперь вы должны быть в состоянии назвать экземпляр этого контроллера из маршрута, так что вам нужно добавить контроллеры вы имеете к DC

Где бы вы создаете свой экземпляр стройных вам нужно будет получить DC и добавить экземпляр контроллера:

$app = new \Slim\App($config['slim']); 

// Get Dependency Container for Slim 
$container = $app->getContainer(); 

$container['HomeActionController'] = new Controller\HomeActionController($container['view']); //Notice passing the view 

Как примечание выше экземпляр возможно, были закрытием, но я не видел этого в то время или делал их. Кроме того, есть способы ленивой загрузки, которые я еще не изучил, но см. here для получения дополнительной информации.

Теперь последнее, что вам нужно сделать, это называть их на маршрутах, которые не являются огромной проблемой.

$app->get('/home', 'HomeActionController:view'); 

Конечно, вы не можете иметь действие с параметрами, но у меня не было проблемой просто передавая их вместе в запросе, а затем получить их оттуда.

+0

Какая тонкая версия вы используете. –

+0

Я на последнем 3-ом. – nerdlyist

1

Если вы хотите создать приложение без каких-либо рамок, то я бы рекомендовал глядя через этот небольшой GitHub репо: https://github.com/PatrickLouys/no-framework-tutorial

Он проходит через с вами настройки все в плане маршрутизации, а также сделает все идет через index.php в общей папке, как ваш запрос.

 Смежные вопросы

  • Нет связанных вопросов^_^