Php Slim 3自动装弹机

Php Slim 3自动装弹机,php,autoload,slim,Php,Autoload,Slim,我是slim框架的新手,不知道如何使用自动加载程序自动加载我的类 我创建了一个app/models/myclass.php,但是当我尝试使用它时,我得到了一个找不到的类。我不确定自动加载类的正确方式,或者我应该使用的命名约定。我是否应该以某种方式通过composer.json执行此操作?我在网上搜索了好几个小时,没有任何可靠的答案 更新: 设法做到了这一点: 在app/src/model/Client.php中添加了模型 添加了名称空间App\Model 在Dependencies.php中添

我是slim框架的新手,不知道如何使用自动加载程序自动加载我的类

我创建了一个
app/models/myclass.php
,但是当我尝试使用它时,我得到了一个找不到的类。我不确定自动加载类的正确方式,或者我应该使用的命名约定。我是否应该以某种方式通过composer.json执行此操作?我在网上搜索了好几个小时,没有任何可靠的答案

更新

设法做到了这一点:

  • 在app/src/model/Client.php中添加了模型
  • 添加了
    名称空间App\Model
  • 在Dependencies.php中添加了以下内容:
$container['App\Model\Client']=函数($c){
返回新的App\Model\Client();
};
和routes.php:

$app->get('/client/ping/{id}',函数($request,$response,$args){
$container=$this->getContainer();
$client=$container['App\Model\client'];//实例化一个新的客户端
...
...
}

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

{
“要求”:{
“超薄/超薄”:“^3.9”
},
“自动加载”:{
“psr-4”:{
“我的\\名称空间\\\”:“src/”
}
}
}
//index.php
需要“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)


它已经包含在内了。然后呢?我如何为我的模型配置它?这是关于slim 3的,我认为模型类应该添加到容器中的某个地方。不能,但可以。上面的代码可以工作吗?如果仍然出现错误,请尝试在安装之前添加前导反斜杠:
return new\App\model\Client()
很抱歉,我没有使用您的答案,似乎通过composer安装的Slim 3已经为app/src安装了自动加载程序。我相信您的答案是针对Slim2的。我只是将我的类放在了正确的路径上。如果您没有指定composer或注册知道在哪里搜索文件的自动加载程序,composer将无法自动加载您的文件。您从何处获得了是信息吗?你不需要在Slim 3中使用($app)
,因为你可以调用
$this
来获取应用。你说得对,谢谢,我会更新代码的。
composer dump-autoload -o