gpt4 book ai didi

使用命名空间找不到 PHP 类

转载 作者:行者123 更新时间:2023-12-04 16:57:10 24 4
gpt4 key购买 nike

我不知道为什么我的类(class)无法加载。我正在使用 Composer 进行 psr-4 自动加载并成功使用它。这是我设置类(class)的方式:

/项目
/类
/饲料
/拉
/工厂
Composer .json
测试我的工厂.php

饲料/工厂/FeedFactory.php

namespace MyClasses\Feeds\Factory;

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

饲料/工厂/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();

项目/ 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 文件。仍然出现错误,尽管现在不同了 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 .

关于使用命名空间找不到 PHP 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52807304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com