当前位置: 首页 > 知识库问答 >
问题:

未找到Composer类致命错误-wordpress插件开发

冯永长
2023-03-14

我试图使用作曲家在wordpress插件中自动加载我的类。

我希望我的模型和控制器驻留在GD名称空间中,但是我希望将我的模型和控制器放入它们自己的目录中。

我面临错误消息:致命错误:Class'GD\ShortcodeController'未在/….中找到/src/GD/App。php第10行

目录/文件结构

plugins
    gd
        cache
            // location for twig template cache
        public
            // location for plugin assets
        src
            controllers
                ShortcodeController.php
            models
            App.php
        templates
            test.html
        vendor
            // location for application dependencies installed via composer
            composer
                autoload_namespaces.php

创作者json

{
    "require": {
        "twig/twig": "1.*"
    },
    "autoload": {
        "psr-0": {
            "GD": ["src/", "src/GD/", "src/GD/controllers/", "src/GD/models/"]
        }
    }
}

供应商/编写器/自动加载_名称空间。php

return array(
    'Twig_' => array($vendorDir . '/twig/twig/lib'),
    'GD' => array($baseDir . '/src', $baseDir . '/src/GD', $baseDir . '/src/GD/controllers', $baseDir . '/src/GD/models'),
);

GD/src/App.php

class App
{
    private $plugin_dir;
    private $twig;

    public function init()
    {
        $shortcodes = new ShortcodeController;
        add_shortcode( 'gd', [ $shortcodes , 'gd'] );
    }
}

GD/src/controllers/ShortcodeController。php

<?php namespace GD;

class ShortcodeController
{
    // STUFF IN HERE
}

我应该使用自动加载类映射而不是psr-0吗?当使用类映射时,composer如何处理命名空间类?

共有1个答案

庾君博
2023-03-14

您的psr-0中有“src/GD/controllers/”

"autoload": {
    "psr-0": {
        "GD": ["src/", "src/GD/", "src/GD/controllers/", "src/GD/models/"]
    }
}

但是shortcode控制器。php文件位于GD/src/controllers文件夹和namespace

<?php namespace GD;

class ShortcodeController
{
    // STUFF IN HERE
}

所以,您的短代码ontroller.php应该在src/GD/控制器/gd文件夹中,但是现在路径是GD/src/控制器/短代码ontroller.phpAutoloader正在查找在psr-0"src/GD/控制器/"更改为"src/GD/控制器/""src/GD/控制器/""gd/src/控制器/">。此外,您正在从根/全局命名空间中使用短期代码=新的短期代码控制器;因此,它可能是

shortcodes = new GD\ShortcodeController;

根据

"autoload": {
    "psr-0": {"GD\\": "GD/src/controllers/"}
}

你们班

<?php namespace GD;

class ShortcodeController
{
    // STUFF IN HERE
}

应该在GD/src/控制器/gd文件夹中。

 类似资料:
  • 我有一个类似的问题,在这里描述: 一切都按照我的预期工作;我的代码访问数据库并打印输出,不管我是从命令行界面还是从网络浏览器运行。同样的结果。如果我用PHPUnit在Eclipse中运行它,我会得到一个错误: 哪些点位于下一行: 此代码打印出“是”。 还有一点需要指出的是,我在上面代码所在的类中使用自己的名称空间。我的单元测试在全局命名空间中。 我已经按照上面的URL中的步骤,但是,唉,没有用。:

  • 我收到了以下错误消息: 致命错误:未捕获错误:在F:\projects\websites\main\u website\app\Exceptions\Handler中找不到类“Auth”。php:65堆栈跟踪:#0 F:\projects\websites\main\u website\vendor\laravel\framework\src\illighted\Foundation\Http\K

  • 尝试在我的stripe帐户上提交测试付款时,我遇到以下错误: 致命错误:未捕获错误:在/home/dh#u y3rvc7/vvnow.dreamhosters.com/wp-content/plugins/wp-Stripe-integration/includes/process payment.php:25堆栈跟踪:#0/home/dh#uy3rvc7/vvnow.dreamhosters.c

  • 我无法为iOS构建颤动项目,给我的错误如下 尝试 吊舱拆卸 rm ios/颤抖/颤抖。podspec 颤振清洁 扑扑酒吧获取 吊舱安装 清除导出数据 颤振运行 仍然一样,我无法摆脱这个错误。我甚至尝试从pubsec.yaml中删除路径提供程序插件 任何帮助都将非常感谢,因为我已经坚持了24小时

  • 我尝试一个简单的Web服务示例,我得到这个错误,即使我取消注释在文件: 致命错误:在C:\Program Files(x86)\EasyPHP-5.3.9\第2行的www\server.php中找不到类'SoapClient'

  • 问题内容: 我有一个问题,我在Linux服务器上安装了“ Archive_Zip 0.1.1”,但是当我尝试运行脚本来创建zip文件时,却出现了致命错误 致命错误:在…中找不到类 我把代码放在哪里 但找不到类文件。 请告诉我解决方案。我该怎么办才能解决问题?我也将文件放到脚本所在的文件夹中,但是不起作用。 问题答案: 对于要显示的类,PHP需要安装zip扩展名。 有关安装说明,请参见此页面(Lin