Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // ArticlesRespositoryInterface.php
- interface ArticlesRepositoryInterface
- {
- public function get($id): Article;
- }
- // PDOArticlesRespository.php
- class PDOArticleRepository implements ArticlesRepositoryInterface
- {
- public function get($id): Article
- {}
- }
- // FileSystemArticlesRespository.php
- class FileSystemArticleRepository implements ArticlesRepositoryInterface
- {
- public function get($id): Article
- {}
- }
- // GetArticlesController.php
- class GetArticleController
- {
- protected $articlesRepository:
- public function __construct(
- ArticlesRepositoryInterface $articlesRepository
- ) {
- $this->articlesRepository = $articlesRepository;
- }
- public function __invoke(
- Request $request,
- Response $response
- ) {
- $id = $request->input('id');
- $article = $articlesRepository->get($id);
- $response->getBody()->write("{$article->title}");
- return $response;
- }
- }
- // app.php
- $container->bind(ArticleRepositoryInterface::class, function($container) {
- $connection = $container->get(Connection::class);
- return new FileSystemArticleRepository($connection);
- });
- $container->bind(GetArticleController::class, function ($container) {
- $repository = $container->get(ArticleRepositoryInterface::class);
- return new GetArticleController($repository):
- });
- $container->get(GetArticleController::class);
- Route::get('/articles/', 'GetArticleController'):
- // config/services.yml
- services:
- Connection:
- arguments:
- database: mysql
- host: localhost
- user: ricardo
- pass: 123456
- ArticleRepositoryInterface:
- class: PDOArticleRepository
- arguments:
- - Connection
- GetArticleController:
- arguments:
- - ArticleRepositoryInterface
Add Comment
Please, Sign In to add comment