Symfony形成php7类型提示

时间:2018-03-14 13:16:50

标签: php symfony php-7

我尝试在我的symfony 4项目中使用symfony表单,并遇到以下问题:

如果我在我的实体上使用PHP 7类型提示,例如

class User {
  private $name;

  public function getName() : string {
    return $this->name;
  }
}

并尝试使用symfony表单包自动填充:

class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class);
    }
}

控制器:

public function postUserAction(Request $request)
    {
        $user = new User();
        $form = $this->createForm(UserType::class, $user);
        $form->handleRequest($request);
    }

我从symfony收到以下错误:

Type error: Return value of App\Entity\User::getName() must be of the type string, null returned

如果我从这样的权利中删除了类型提示:

class User {
  private $name;

  public function getName() {
    return $this->name;
  }
}

错误不再存在。我知道表单正在调用getName()函数,因为实体没有填充数据,但对象的返回值是null

有没有办法保留PHP7类型提示并仍然使用表单包?

谢谢!

1 个答案:

答案 0 :(得分:3)

使用php 7.1,你可以用这种方式指定它:

public function getName() : ?string {

以这种方式指定返回值是字符串或null,但仅限于php 7.1