Autoloader预期类Symfony2

Dr.*_*all 7 php autoloader symfony doctrine-orm

我正在使用symfony 2.3框架,自动加载器声称已找到该文件,但没有类:

RuntimeException: The autoloader expected class "Sensio\Bundle\
FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter" 
to be defined in file "/home/na/auth/vendor/sensio/framework-extra-bundle/
Sensio/Bundle/FrameworkExtraBundle/Request/ParamConverter/
DateTimeParamConverter.php". The file was found but the class was not in it, 
the class name or namespace probably has a typo.
Run Code Online (Sandbox Code Playgroud)

这个引用的文件如下所示:

<?php

/*
 * This file is part of the Symfony framework.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use DateTime;

/**
 * Convert DateTime instances from request attribute variable.
 *
 * @author Benjamin Eberlei <kontakt@beberlei.de>
 */
class DateTimeParamConverter implements ParamConverterInterface
{
    /**
     * @{inheritdoc}
     * 
     * @throws NotFoundHttpException When invalid date given
     */
    public function apply(Request $request, ConfigurationInterface $configuration)
    {
        $param = $configuration->getName();

        if (!$request->attributes->has($param)) {
            return false;
        }

        $options = $configuration->getOptions();
        $value   = $request->attributes->get($param);

        $date = isset($options['format'])
            ? DateTime::createFromFormat($options['format'], $value)
            : new DateTime($value);

        if (!$date) {
            throw new NotFoundHttpException('Invalid date given.');
        }

        $request->attributes->set($param, $date);

        return true;
    }

    /**
     * @{inheritdoc}
     */
    public function supports(ConfigurationInterface $configuration)
    {
        if (null === $configuration->getClass()) {
            return false;
        }

        return "DateTime" === $configuration->getClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

无论如何,一些可能有用的细节是我最近安装了Doctrine并运行命令......

 2028  php app/console doctrine:schema:create
 2029  php app/console doctrine:generate:entities Auth
Run Code Online (Sandbox Code Playgroud)

在这些命令之后,symfony停止了工作.我不知道这是不是一些奇怪的错误.如果您需要更多信息,我可以发布.谢谢你的帮助.

Mil*_*anG 17

缺少(或短)PHP开始标记也可能导致该错误.是的,这听起来很有趣,但如果您只是按照Symfony示例并复制/粘贴全班,您可能不会注意到(因为我没有).

  • Ermahgerd,我浪费了一个小时调试这个,我有`<?`而不是`<?php`,它不喜欢它. (3认同)

AJ *_*eti 5

现在这有点旧了,但是如果有其他人通过搜索到达这里:这无疑是一个缓存问题.手动删除app/cache/dev和app/cache/prod的内容,一切都应解决.


Dr.*_*all 0

我认为 Symfony2 中有一个错误。他们最近更新了 symfony 的新版本(2.3.1),我认为这肯定破坏了某些东西。无论如何,我必须在 AppKernel.php 文件中注释掉 //new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle() 行才能消除错误。