Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP致命错误:I';我正在尝试在我的Symfony2应用程序中实现Form\AbstractType_Php_Symfony_Namespaces - Fatal编程技术网

PHP致命错误:I';我正在尝试在我的Symfony2应用程序中实现Form\AbstractType

PHP致命错误:I';我正在尝试在我的Symfony2应用程序中实现Form\AbstractType,php,symfony,namespaces,Php,Symfony,Namespaces,我得到以下错误: Fatal error: Declaration of Bean\OauthServerBundle\Form\Type\AuthorizeFormType::buildForm() must be compatible with Symfony\Component\Form\FormTypeInterface::buildForm(Symfony\Component\Form\FormBuilderInterface $builder, array $options) in

我得到以下错误:

Fatal error: Declaration of Bean\OauthServerBundle\Form\Type\AuthorizeFormType::buildForm() must be compatible with Symfony\Component\Form\FormTypeInterface::buildForm(Symfony\Component\Form\FormBuilderInterface $builder, array $options) in src/Bean/OauthServerBundle/Form/Type/AuthorizeFormType.php on line 25
我不知道为什么会出现这个错误。AbstractType::buildForm()接受FormBuilderInterface,Symfony2为FormBuilder实现FormBuilderInterface

以下是我来源的内容:

<?php
namespace Bean\OauthServerBundle\Form\Type;

use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\AbstractType;

class AuthorizeFormType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        /* some code ... */
   }

   /* more code ... */
}

FormBuilderInterface,Symfony2为FormBuilder实现FormBuilderInterface


这并没有改变这样一个事实,
buildForm
必须声明为在父类中,并接受实现
FormBuilderInterface

的任何对象,因此symfony book中的代码应该如下所示:

namespace Bean\OauthServerBundle\Form\Type;

use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\AbstractType;

class AuthorizeFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        /* some code ... */
   }

   /* more code ... */
}

这就是你的意思吗?

所以,仅仅因为它接受FormBuilderInterface作为参数,并不意味着你可以向它传递FormBuilder?你可以,但在方法声明中你必须使用
FormBuilderInterface
。如果你接受绑定到接口的类,情况总是这样吗?这个答案是正确的,文件不正确。文档显示了具体类的使用,而不是接口。别忘了更新“use”语句。我想他们可能已经更新了文档。我根据文档的最新版本更新了我的代码,它成功了。以后,您可以深入研究源代码。例如,XDebug以Symfony/Component/Form的形式给出了文件的位置,它们都在这里(完整路径是vendor/Symfony/src/Symfony/…)。然后,您可以很容易地找到“AbstractType”,并查看导致问题的方法的签名是什么。