【问题标题】:Symfony first page - The autoloader expected class […] to be defined in fileSymfony 第一页 - 自动加载器预期的类 […] 将在文件中定义
【发布时间】:2017-12-12 20:38:32
【问题描述】:

我检查过类似的问题,但由其他人发布,但我仍然看不到我的代码有什么问题。

我刚刚从文档中复制了它 - https://symfony.com/doc/3.4/page_creation.html

<?php

// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class LuckyController
{
    /**
     * @Route("/lucky/number")
     */
    public function numberAction()
    {
        $number = mt_rand(0, 100);

        return new Response(
            '<html><body>Lucky number: '.$number.'</body></html>'
        );
    }
}

自动加载器预期的类“App\Controller\LuckyController”是 在文件“E:\projektai\php”中定义 projektai\htdocs\mokomieji\weather_demo_3\vendor\composer/../../src\Controller\LuckyController.php”。 找到文件但类不在其中,类名或 命名空间可能在 E:\projektai\php 中有错字 projektai\htdocs\mokomieji\weather_demo_3\config/services.yaml(其中 加载到资源“E:\projektai\php projektai\htdocs\mokomieji\weather_demo_3\config/services.yaml")。

所以它说找到文件但找不到类。怎么找不到类?我看到了。它如何尝试搜索它?

composer.json

{
    "type": "project",
    "license": "proprietary",
    "require": {
        "php": "^7.0.8",
        "symfony/console": "^3.4",
        "symfony/flex": "^1.0",
        "symfony/framework-bundle": "^3.4",
        "symfony/lts": "^3",
        "symfony/yaml": "^3.4"
    },
    "require-dev": {
        "symfony/dotenv": "^3.4"
    },
    "config": {
        "preferred-install": {
            "*": "dist"
        },
        "sort-packages": true
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "scripts": {
        "auto-scripts": {
            "cache:clear": "symfony-cmd",
            "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd"
        },
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-update-cmd": [
            "@auto-scripts"
        ]
    },
    "conflict": {
        "symfony/symfony": "*"
    },
    "extra": {
        "symfony": {
            "id": "01C16444CCZTY1MPPEE5GJZ63G",
            "allow-contrib": false
        }
    }
}

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    在我的情况下,我有一段时间没有使用 php,我也从教程中复制/粘贴,但我实际上忘记添加

    <?php
    

    在文件的开头。导致相同的错误消息。

    【讨论】:

    • 另一个潜在的失误是在开始编码之前忘记运行“composer install”。
    【解决方案2】:

    基于该结构,您可能正在使用 Symfony Flex,因此您的命名空间应该是 namespace App\Controller;

    尝试切换到4.0 version of documentation

    【讨论】:

    • 我不认为我在使用 symfony flex,至少我不知道那是什么。写完评论后会添加composer.json。我的任务是使用 symfony 3,所以使用 symfony 3 文档应该很好。
    • @Darius.V 您正在使用 symfony flex,检查您的作曲家依赖项,只需遵循 Symfony 4 的文档,命名空间现在是 App。还有 Symfony 3.4 = Symfony 4
    • 不,Symfony 3.4 不等于 Symfony 4,就像在 v4 中一样,所有不推荐使用的功能都被删除了
    • @NicoHaase 是的,我只是想告诉他,他可以使用 Symfony 4.0 的文档,因为它基本相同,只是没有弃用的功能。
    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多