自动加载器导致课堂找不到



我试图将自动加载器包括在我的WordPress项目中。更具体地说,我正在开发一个包含我所有类的类/目录的插件。我希望通过名称空间与我的WordPress Project root和儿童文件/文件夹访问这些类。

我觉得我的作曲家。json应该照顾自动加载器的实现,尽管我仍未发现班级没有发现致命的错误。还有其他人遇到这个问题吗?我感谢提前的建议!

这是我到目前为止尝试的:

./composer.json

  {
        "autoload": {
            "psr-4": {
                "Classes\": "wp-content/plugins/example-plugin/Classes"
            }
        },
        "require": {}
    }

然后...

composer install

./index.php(在wordpress root)

require_once('./vendor/autoload.php');
$foo = new ClassesMyService();
var_dump($foo); //Fatal error: Uncaught Error: Class 'ClassesMyService' not found
die();

./wp-content/plugins/example-plugin/class/myService.php

namespace Classes;
class MyService {

是的,确实,作曲家应该照顾您的依赖和自动加载。您的配置也正确。让我们浏览一个检查清单:

您的环境看起来像这样吗?

$ tree
.
├── composer.json
├── composer.phar
├── index.php
├── vendor
│   ├── autoload.php
│   └── composer
│       ├── autoload_classmap.php
│       ├── autoload_namespaces.php
│       ├── autoload_psr4.php
│       ├── autoload_real.php
│       ├── autoload_static.php
│       ├── ClassLoader.php
│       ├── installed.json
│       └── LICENSE
└── wp-content
    └── plugins
        └── example-plugin
            └── Classes
                └── MyService.php

您的作曲家。json看起来像这样吗?

$ cat composer.json
{
    "name": "my/project",
    "authors": [
        {
            "name": "My Name",
            "email": "my@na.me"
        }
    ],
    "autoload": {
       "psr-4": {
           "Classes\": "wp-content/plugins/example-plugin/Classes"
       }
    },
    "require": {}
}

您的实现看起来像这样吗?

$ cat wp-content/plugins/example-plugin/Classes/MyService.php
<?php
namespace Classes;
class MyService {
}

最后,您的索引看起来像这样吗?

$ cat index.php
<?php
require_once('./vendor/autoload.php');
$foo = new ClassesMyService;
var_dump($foo);

如果您对所有这些的答案都是"是",您是否刷新了自动加载器?

$ composer dump-autoload

如果您的答案是"是",则创建一个新目录,下载composer.phar,运行php composer.phar init,将答案的文件复制并粘贴到该目录中,然后重试。

如果有效,则在您的实现中进行diff。我的猜测是,如果您走了这么远,那么您就有一个流浪的角色 - 可能是Unicode的空间 - 隐藏在一个文件中。

相关内容

  • 没有找到相关文章

最新更新