Slim 3 自动装带器

Slim 3 autoloader

我是 slim 框架的新手,不知道如何使用自动加载器自动加载我的 classes。

我创建了一个 app/models/myclass.php,但当然当我尝试使用它时,我发现 class 未找到。我不确定哪个是自动加载 classes 的正确方法,或者我应该使用的命名约定。我应该通过 composer.json 以某种方式完成吗?我在网上搜索了几个小时,但没有任何可靠的答案。

更新:

设法做到了:

$container['App\Model\Client'] = function ($c) {
    return new App\Model\Client();
};

和routes.php:

$app->get('/client/ping/{id}',  function ($request, $response, $args)  {
    $container = $this->getContainer();
    $client=$container['App\Model\Client']; //instantiates a new Client
    ...
    ...
}

要自动加载自己的 类,您应该通过向 composer.json 添加一些选项来使用 Composer

{
    "require": {
        "slim/slim": "^3.9"
    },
    "autoload": {
        "psr-4": {
            "My\Namespace\": "src/"
        }
    }
}
// index.php
require 'vendor/autoload.php';

$app = new \Slim\App();
$myClass = new \My\Namespace\MyClass();

在 运行 composer update 之后,composer 将注册您自己的命名空间并为您自动加载它们。

将此添加到 composer.json 文件中 其中 app1 是您要自动加载的文件夹的名称。

"autoload": {
    "psr-4":{
        "app1\": "anything"
    }
}

执行此操作后 运行 在 cmd 中执行此操作(通过 composer)

composer dump-autoload -o