带控制器的Slim Framework PSR 4

时间:2015-05-22 06:53:33

标签: model-view-controller slim psr-4

我正在制作一个基于Slim Framework的应用程序。我遵循PSR 4模式。该应用程序基本上处理RESTful服务。为了使其未来更加灵活,我们采用了与传统的超薄编码不同的方法。 我的目录结构如下所示,

│   autoload.php
│   composer.json
│   index.php
│   README.md
│
└───src
    └───Service
        ├───Component
        │   ├───Router
        │   │       Route.php
        │   │       RouterInterface.php
        │   │
        │   └───YamlLoader
        │           YamlLoader.php
        │           YamlLoaderInterface.php
        │
        ├───Core
        │       Bootstrap.php
        │       Settings.php
        │
        ├───Framework
        │   ├───Controller
        │   │       HomeController.php
        │   │
        │   ├───Model
        │   └───View
        └───Routing
                course.routing.yml
                home.routing.yml

在“路由”目录中,我将使用菜单链接存储一些yaml文件。这些将在路由器组件中进行解析,以生成到控制器及其方法的正确可调用路径。

但是,我面临的问题是确定哪种方法可以做到这一点?如何从.yml文件中分配每个路由器项目并将其用作

$app->map('/about', '\Service\Framework\Controller\HomeController:about')->via('GET', 'POST');

对于进一步的引用,其中一个yaml文件看起来像

service.about:
  path: '/about'
  handler:
    _controller: '\Service\Framework\Controller\HomeController::about',
  http_method: GET

service.authenticate:
  path: '/auth'
  handler:
    _controller: 'Service\Framework\HomeController::auth',
  http_method: GET

什么是好的和有效的方式?请建议。

1 个答案:

答案 0 :(得分:0)

所以,与Slim IRC中的一些人交谈。我发现,任何命名空间类都应该作为字符串提供。所以,

\Service\Framework\Controller\HomeController

成为

\\Service\\Framework\\Controller\\HomeController

现在它正在与之合作,

$this->app->map('/hello', '\\Service\\Framework\\Controller\\HomeController:about')->via('GET');
$this->app->run();