Slim 3 自动装带器
Slim 3 autoloader
我是 slim 框架的新手,不知道如何使用自动加载器自动加载我的 classes。
我创建了一个 app/models/myclass.php
,但当然当我尝试使用它时,我发现 class 未找到。我不确定哪个是自动加载 classes 的正确方法,或者我应该使用的命名约定。我应该通过 composer.json 以某种方式完成吗?我在网上搜索了几个小时,但没有任何可靠的答案。
更新:
设法做到了:
- 已添加模型:app/src/Model/Client.php
- 在 Client.php
中添加了 namespace App\Model;
- 在 depedencies.php 中添加了以下内容:
$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
我是 slim 框架的新手,不知道如何使用自动加载器自动加载我的 classes。
我创建了一个 app/models/myclass.php
,但当然当我尝试使用它时,我发现 class 未找到。我不确定哪个是自动加载 classes 的正确方法,或者我应该使用的命名约定。我应该通过 composer.json 以某种方式完成吗?我在网上搜索了几个小时,但没有任何可靠的答案。
更新:
设法做到了:
- 已添加模型:app/src/Model/Client.php
- 在 Client.php 中添加了
- 在 depedencies.php 中添加了以下内容:
namespace App\Model;
$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