PHP Slim 3 Framework - 我可以在哪里放置我的控制器文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP Slim 3 Framework - 我可以在哪里放置我的控制器文件?相关的知识,希望对你有一定的参考价值。

我在容器中注册了一个控制器,但似乎没有用,因为它与正确的位置不匹配。

苗条的 src routes.php文件

<?php
// Routes
$app->get('/dd', 'AppcontrollersHomeController:home');

苗条 APP 控制器 HomeController.php

<?php
class HomeController 
{
   protected $container;

   // constructor receives container instance
   public function __construct(ContainerInterface $container) {
       $this->container = $container;
   }

   public function home($request, $response, $args) {
        // your code
        // to access items in the container... $this->container->get('');
        return $response;
   }

   public function contact($request, $response, $args) {
        // your code
        // to access items in the container... $this->container->get('');
        return $response;
   }
}

我的项目文件夹结构:

slim
  public
    index.php
    .htaccess

  App
    controllers
      HomeController.php

  src
    dependencies.php
    middleware.php
    routes.php
    settings.php

  	emplates
    index.phtml

  vendor
    slim

也许我应该设置 slim src settings.php?

因为它显示Slim Application Error:

类型:RuntimeException消息:可调用App controllers HomeController不存在文件:D: htdocs slim vendor slim slim Slim CallableResolver.php行:90

最后,我还参考了这些文章:https://www.slimframework.com/docs/objects/router.html#container-resolution

PHP Slim框架创建控制器PHP Slim Framework Create Controller

如何在Slim Framework 3上创建中间件? How can i create middleware on Slim Framework 3?

答案

您忘记在HomeController文件中定义命名空间,将此行添加到HomeController.php的顶部:

namespace AppcontrollersHomeController;
另一答案

将psr-4添加到您的composer文件中,以便您可以调用命名空间。

{
    "require": {
        "slim/slim": "^3.12
    },
    "autoload": {
        "psr-4": {
            "App\": "app"
        }
    }
}

此PSR描述了从文件路径自动加载类的规范。然后在您的routes.php文件中添加以下内容:

<?php
    use appcontrollersHomeController;
    // Routes
    $app->get('/dd', 'AppcontrollersHomeController:home');

最后在你的HomeController.php文件中添加:

<?php
    namespace appcontrollers;
    class HomeController 
    {
    //.. your code
    }

希望这可以帮助...:)

以上是关于PHP Slim 3 Framework - 我可以在哪里放置我的控制器文件?的主要内容,如果未能解决你的问题,请参考以下文章

学习Slim Framework for PHP v3 ( 二)

学习Slim Framework for PHP v3 --route怎么被调用的?

学习Slim Framework for PHP v3

学习Slim Framework for PHP v3 --route怎么被匹配的?

PHP Slim Framework REST API - 在每条路由之前验证访问令牌?

Slim Framework和Ember.js中的Access-Control-Origin