Symfony getUser类型提示

时间:2016-02-26 23:24:05

标签: symfony type-hinting

我觉得必须经常在getUser上使用@var有点烦人。看起来很草率。

所以我正在考虑开始使用它而不是

<?php

// in the controller
$user = Customer::isCustomer($this->getUser());

// in the entity
/**
 * @param Customer $user
 *
 * @return Customer
 */
public static function isCustomer(Customer $user)
{
    return $user;
}

这是个好主意吗?馊主意?可怕的想法?

1 个答案:

答案 0 :(得分:1)

在这种情况下,类型提示是更好的选择。

为什么要通过手动添加检查来编写更多代码,而不是在您的参数中添加简单的类型提示。

代表两个条件的四行代码给出了完全相同的结果:

/**
 * @param Customer|null  $user
 *
 * @return Customer|null
 */
public static function isCustomer(Customer $user = null)
{
    // If $user is null, it works
    // If $user is a Customer instance, it works
    // If it's other, an exception is thrown

    return $user;
}

类型提示优化并为代码提供更多可读性。 它是symfony2,php等中的惯例。

它通常用作与您和您的方法的约束(或合同)。

此外,它是接口或抽象类的唯一选择,可以将参数添加到参数中,因为它们没有正文,因此无法写入条件。

<强>更新

在SensioLabs Insight中,对象类型提示使用以下消息表示警告:

  

作为对象的参数user应该是打字的。

由于使用了动词should,我认为它不是强制性要求,只是在不引起任何问题的情况下这是一种非常好的做法。

此外,您可以使用您提供的示例,而不会使您的代码变得可怕。