首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到使用自定义类的CakePHP类

未找到使用自定义类的CakePHP类
EN

Stack Overflow用户
提问于 2018-06-05 19:30:24
回答 3查看 1.7K关注 0票数 0

我刚开始使用CakePHP 3,我正在试着开始运行,但是做最简单的事情被证明是令人头疼的。

我在src/App/MySimpleClass.php中有一个类,MySimpleClass

代码语言:javascript
复制
<?php
    namespace MyApp\MyNamespace;

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

在我的控制器中:

代码语言:javascript
复制
<?php
    namespace App\Controller;

    use Cake\Controller\Controller;
    use MyApp\MyNamespace\MySimpleClass;

    class MyFirstController extends Controller {

        public function display() {
            $mySimpleClass = new MySimpleClass();
            echo $mySimpleClass->aSimpleFunction();
        }
    }

但这总会让我想到:Error in: ROOT/src/Controller/TestController.php, line 10 Class 'MyApp\MyNamespace\MySimpleClass' not found

我使用bin/cake server来运行HTTP服务器。

我将App::className('MyApp\MyNamespace\MySimpleClass');添加到bootstrap.php中,以查看这是否会有所不同,但它没有。

我在几个场合运行过composer dump-autoload

我尝试将MySimpleClass放入全局名称空间,但仍然出现错误。

PHPStorm没有给我任何语法或命名错误。

EN

回答 3

Stack Overflow用户

发布于 2018-06-05 23:42:44

你应该把你的控制器放在:

源/控制器

并使用:

代码语言:javascript
复制
namespace App\Controller;
票数 0
EN

Stack Overflow用户

发布于 2018-06-06 01:11:30

不要紧,我终于找到解决方案了。

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

代码语言:javascript
复制
"autoload": {
    "classmap": [
        "src"
    ],
    ...,
}

编辑:

我没有滥用类映射,而是将类文件移动到src之外的一个目录中

票数 0
EN

Stack Overflow用户

发布于 2018-06-07 23:23:39

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

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

另外:根据您引用的错误消息,您的MyFirstController在一个名为TestController.php的文件中。相反,它应该是MyFirstController.php。关于这个话题,我建议给https://book.cakephp.org/3.0/en/intro/conventions.html#file-and-class-name-conventions读一读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50699008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档