Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自定义类找不到CakePHP类_Php_Cakephp 3.0 - Fatal编程技术网

使用自定义类找不到CakePHP类

使用自定义类找不到CakePHP类,php,cakephp-3.0,Php,Cakephp 3.0,我刚开始使用CakePHP3。我试着站起来跑步,但做最简单的事情却让我头疼 我在src/App/MySimpleClass.php <?php namespace MyApp\MyNamespace; class MySimpleClass { public function aSimpleFunction() { return 1; } } 您应该将控制器放置在: src/控制器 和使用: namespa

我刚开始使用CakePHP3。我试着站起来跑步,但做最简单的事情却让我头疼

我在
src/App/MySimpleClass.php

<?php
    namespace MyApp\MyNamespace;

    class MySimpleClass {
        public function aSimpleFunction() {
            return 1;
        }
    }

您应该将控制器放置在:

src/控制器

和使用:

namespace App\Controller;

没关系,我终于找到了解决办法

我只需要将
src
添加到
composer.json
中的类映射中:

"autoload": {
    "classmap": [
        "src"
    ],
    ...,
}
编辑:


我没有滥用类映射,而是将类文件移动到
src

之外的目录中。如果您的类位于文件src/App/MySimpleClass.php中,则名称空间必须是
App\App
。第一个
App
是指每个CakePHP 3.x应用程序的根命名空间,第二个
App
是指将类文件放入
src
目录中的子目录

如果类的命名空间应为
App\MyNamespace
,则类文件必须位于
src/MyNamespace

另外:根据您引用的错误消息,MyFirstController位于名为TestController.php的文件中。相反,它应该是MyFirstController.php。我建议大家阅读一下这个主题。

与其说这是一个“解决方案”,不如说这是一个笨拙的解决办法。将实现直接放在
src
文件夹中不是好做法。您的目录结构应该镜像您的名称空间结构,这样您就不需要这种攻击。
"autoload": {
    "classmap": [
        "src"
    ],
    ...,
}