簡體   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