繁体   English   中英

使用名称空间找不到PHP类

[英]PHP Class not found using namespaces

我无法找出为什么我的课程无法加载。 我正在使用Composer进行psr-4自动加载,并已成功使用它。 这是我的班级设置方法:

/项目
/班
/提要
/拉
/厂
composer.json
testMyFactory.php

feeds / factory / FeedFactory.php

namespace MyClasses\Feeds\Factory;

interface FeedFactory
{
    public function build($provider);
}

feeds / factory / PullFeedFactory.php

namespace MyClasses\Feeds\Factory;

use MyClasses\Feeds\Factory\FeedFactory;
use MyClasses\Feeds\Pull\Providers\One;

/**
 * Class FeedFactory
 */

class PullFeedFactory implements FeedFactory
{
    public function __construct(){}

    /**
     * Build provider object for factory
     * @param string $provider Type of feed provider to return
     * @return Object Provider object
     */

    public function build($provider) {
        switch ($provider) {
            case 'one':
                $provider = new One();
                break;
            default:
                $provider = new One`();
                break;
        }

        return $provider;
    }
}

项目/提要/拉/ One.php

namespace MyClasses\Feeds\Pull\Providers;

class One
{
    public function pull() {
        echo 'Pull One';
    }
}

项目/testMyFactory.php

require __DIR__ . '/vendor/autoload.php';

use MyClasses\Feeds\Factory\PullFeedFactory;  

$feed = new PullFeedFactory();
$feed->build('one');
$feed->pull();

project / composer.json

{
    "require": {
      //Remove for example       
    },
    "config": {
        "preferred-install": "dist"
    },
    "require-dev": {
    },
    "autoload": {
        "psr-4": {
            "MyClasses\\": "./classes",
        }
    }
}

这是我一直在Class 'MyClasses\\Feeds\\Factory\\PullFeedFactory' not found in /var/www/html/testPullFactory.php on line xx的错误

我还有其他类可以通过自动加载在Classes目录中工作,但是由于某些原因无法使它正常工作。 我觉得这很明显,但是已经坚持了几个小时。

更新:

更新为包括我的vendor / autoload.php文件。 Stil出现错误,尽管现在有所不同,但Class 'MyClasses\\Feeds\\Pull\\Providers\\One' not found in /var/www/html/classes/Feeds/Factory/PullFeedFactory.php

在您的composer.json中,更改为

"autoload": {
        "psr-4": {
            "MyClasses\\": "classes/",
        }
    }

然后,执行composer dump-autoload

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM