我可能几乎没有太一般的问题,如果我有抱歉重复。 (没找到我正在寻找的答案)。
首先,我使用symfony2框架进行开发,我正在考虑购买phpStorm。它不是一个便宜的程序,我不想浪费钱。但我现在喜欢它,所以我想问一下它是否向未来迈出了一大步?
我的第二个主要问题
有时会发生我看不到某些对象方法的自动完成建议......
有什么方法或一些好的做法可以帮助phpStorm了解我正在处理的对象?
我的想法就像我在其他人的代码中看到的那样:
public function updateSomething(User $user
或......
/**
* Draws an arc on a starting at a given x, y coordinates under a given
* start and end angles
*
* @param Imagine\Image\PointInterface $center
* @param Imagine\Image\BoxInterface $size
* @param integer $start
* @param integer $end
* @param Imagine\Image\Color $color
* @param integer $thickness
*
* @throws Imagine\Exception\RuntimeException
*
* @return DrawerInterface
*/
这些事情是否有帮助,我应该写它们还是只是为了更好的“用户阅读能力”?
答案 0 :(得分:2)
你的第一个问题是一个通常属于StackOverflow之外的类型,因为它非常主观,没有真正的答案,只有人们的意见。对于它的价值,在我看来PHPStorm值得每一分钱相比a)使用没有IDE /文本编辑器,b)使用免费的Aptana IDE(基于eclipse),这是我在PHPStorm之前尝试的替代品。对我来说,可以节省大量的工作效率,但是一个非常有用的功能是调试器才能正常工作(一旦你使用PHP配置了XDebug)。
回答关于自动完成某些对象方法的第二个问题 - 是的,您提供帮助的示例以及其他使用PHPDoc注释的示例应该使PHPStorm方法自动完成几乎适用于所有情况。这也应该具有清除大多数未定义方法调用的虚假PHPStorm黄色高光的副作用,以便真正的错误更加明显。
至少可以做到最大化方法自动完成:
1。始终在可能/适当的情况下提供方法参数的类型提示 - 有关详细信息,请参阅PHP Type Hinting,例如
public function createUser (UserDetails $userDetails, array $roles)
2。始终给出具有返回值PHPDoc comments(开始/ **)的方法,该方法至少定义方法的@return类型(如果没有混合)和任何数组参数的内容类型(如果没有混合)。 e.g。
/**
* @param UserDetails $userDetails
* @param Role[] $roles
* @return User
*/
3。使用@var的PHPDoc注释来定义类成员变量和局部变量的类型,例如。
class UserManager
{
/**
* @var EntityManager
*/
private $entityManager
...
public function doSomething()
{
...
/** @var User $user */
foreach($users as $user)
{
...
}
...
通常使用PHP类型提示并适当使用PHPDoc是一种好习惯。