我觉得必须经常在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;
}
这是个好主意吗?馊主意?可怕的想法?
答案 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
,我认为它不是强制性要求,只是在不引起任何问题的情况下这是一种非常好的做法。
此外,您可以使用您提供的示例,而不会使您的代码变得可怕。