我希望在 PHP 类中自动完成条目

问题描述 投票:0回答:1

我的 PhpStorm PHP 自动完成功能可以工作,但我无法针对修改后的输入对其进行自定义。

这是我在 PHP 类中的方法:

public function orientation($orientation = 'landscape')
{

}

首先,我希望此方法仅接受以下值作为输入:

$orientation = 'landscape' , 'portrait' , 'square' , 'panoramic'

我希望 PhpStorm 建议输入这些值 - 这是主要问题。

php autocomplete phpstorm php-5.6
1个回答
0
投票

在 PHP 5.6 中,我建议将参数类型转换为值对象而不是纯字符串。这是它的样子:

class Camera
{
    /** @param Orientation $orientation */
    public function orientation($orientation)
    {
        var_dump($orientation->getValue());
    }
}

class Orientation
{
    private $orientation;

    /** @param string $value */
    private function __construct($value)
    {
        $this->orientation = $value;
    }

    /** @return string */
    public function getValue()
    {
        return $this->orientation;
    }

    public static function Landscape()
    {
        return new self('landscape');
    }

    public static function Portrait()
    {
        return new self('portrait');
    }

    public static function Square()
    {
        return new self('square');
    }

    public static function Panoramic()
    {
        return new self('panoramic');
    }
}

注意私有构造函数和工厂函数负责值对象$orientation的正确初始化。这样您就可以轻松地缩小可用方向选项的范围。

对于更高版本的 PHP,我建议改用字符串支持的枚举。请参阅:https://www.php.net/manual/en/language.enumerations.backed.php

© www.soinside.com 2019 - 2024. All rights reserved.