2

我可能没有太笼统的问题,如果有重复,我很抱歉。(没有找到我正在寻找的答案)。

首先,我正在使用 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
 */

这些东西有帮助吗?我应该写它们还是只是为了更好的“用户阅读能力”?

4

1 回答 1

2

您的第一个问题通常属于 StackOverflow 之外的类型,因为它非常主观,没有真正的答案,只有人们的意见。对于它的价值,在我看来,PHPStorm 的每一分钱都比 a) 不使用 IDE / 文本编辑器,b) 使用免费的 Aptana IDE(基于 Eclipse),这是我在 PHPStorm 之前尝试过的替代方案。对我来说,有许多生产力节省,但一个非常宝贵的功能是调试器,它可以正常工作(一旦你用 PHP 配置了 XDebug)。

要回答您关于某些对象的方法自动完成的第二个问题 - 是的,您提供帮助的示例以及那些额外使用 PHPDoc 注释的示例都应该使 PHPStorm 方法自动完成几乎在所有情况下都可以工作。这还应该具有清除未定义方法调用的大部分虚假 PHPStorm 黄色突出显示的副作用,以便更明显地看到真正的错误。

您可以做的最少的事情是最大化方法自动完成:

1. 始终在可能/适当的情况下为方法参数提供类型提示 - 有关更多详细信息,请参阅PHP 类型提示,例如

public function createUser (UserDetails $userDetails, array $roles)

2. 始终为具有返回值的方法提供PHPDoc 注释(开头 /**),这些注释至少定义了方法的 @return 类型(如果未混合)和任何数组参数的内容类型(如果未混合)。例如

/**
 * @param UserDetails $userDetails
 * @param Role[] $roles
 * @return User
 */

3. 使用带有@var 的PHPDoc 注释来定义类成员变量和局部变量的类型 eg

class UserManager
{
    /**
     * @var EntityManager
     */
    private $entityManager

    ...

    public function doSomething()
    {
        ...

        /** @var User $user */
        foreach($users as $user)
        {
           ...
        }
...

通常使用 PHP 类型提示并适当使用 PHPDoc 是一种很好的做法。

于 2013-11-11T23:58:41.947 回答