Php 在symfony 3中使用类时出现内部错误500

Php 在symfony 3中使用类时出现内部错误500,php,symfony,Php,Symfony,我对symfony来说真的是个新手,但我是一个长期的开发者。现在我决定看看symfony,但由于它是新事物,问题并不遥远: 我想在我的项目中加入一个类。每次我创建类的instancec时 $fw = new FloydWarshall($graph, $nodes); 我将收到一个内部错误500 我做错了什么 结构: app/ ... bin/ ... src/AppBundle/ Controller/MyController.php Entity/

我对symfony来说真的是个新手,但我是一个长期的开发者。现在我决定看看symfony,但由于它是新事物,问题并不遥远:

我想在我的项目中加入一个类。每次我创建类的instancec时

$fw = new FloydWarshall($graph, $nodes);
我将收到一个内部错误500

我做错了什么

结构:

app/
  ...
bin/
  ...
src/AppBundle/
       Controller/MyController.php
       Entity/
           ...
       Model/
          fw.class.php
       Reposetory/
               ...
var/
  ...
vendor/
   ...
web/
  ...
所以在我的类中,名称空间看起来像

namespace AppBundle\Controller;

use AppBundle\Entity\lpNodes;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use AppBundle\Model\FloydWarshall;
....
在我的fw.class.php中,标题如下所示:

<?php

/**
* @package FloydWarshall
* @author Janne Mikkonen <janne dot mikkonen at julmajanne dot com>
* @date $Date: 2013/03/23 05:10:48 $
* @version $Revision: 1.1.1 $
* @license GNU General Public License, version 2 http://www.opensource.org/licenses/GPL-2.0
**/

namespace AppBundle\Model;

class FloydWarshall {

根据评论,Symfony 3使用或。假设您使用的是Composer,您可以在Composer.json文件中配置支持哪一个

使用PSR-4,文件名必须与类名对应,目录名必须与命名空间匹配。因此,如果您的实体在名称空间AppBundle\entity中被称为FloydWarshall:

它必须位于目录src/AppBundle/Entity中 该文件必须名为FloydWarshall.php 这种严格的原因是作曲家自带的自动加载器。当您执行new AppBundle\Entity\FloydWarshall时,自动加载程序知道在哪里可以找到该类的文件。在您的例子中,您将其命名为fw.class.php,因此自动加载程序无法找到它


与问题相切的是,您是否正在使用开发环境?如果是,Symfony将向您提供一条非常有用的错误消息,这将帮助您更快地诊断问题。

FloydWarshall类的u构造方法是什么样子的?猜测一下,这是因为该文件没有使用与PSR-4兼容的文件名——它应该被称为FloydWarshall.php,而不是fw.class.php。但是,Symfony应该给您提供一些非常好的错误报告,这些报告将向您指出问题所在-您是否使用调试(即开发环境)?我将在ajax请求中收到此错误,因此browserconsole中没有错误。。。。仅适用于上述情况。请打开错误报告。。ini_设置“显示错误”、“打开”;错误报告所有。。500个错误基本上说。。你真的搞砸了…@Blowski天哪,我猜你刚才用那句话就搞定了^^那么你应该把@Blowski的答案标记为正确答案!
/**
* Constructor
* @param array $graph Graph matrice.
* @param array $nodenames Node names as an array.
*/

public function __construct($graph, $nodenames='') {

    $this->weights = $graph;
    $this->nodes   = count($this->weights);
    if ( ! empty($nodenames) && $this->nodes == count($nodenames) ) {
        $this->nodenames = $nodenames;
    }
    $this->__floydwarshall();

}