我的 PhpStorm PHP 自动完成功能可以工作,但我无法针对修改后的输入对其进行自定义。
这是我在 PHP 类中的方法:
public function orientation($orientation = 'landscape')
{
}
首先,我希望此方法仅接受以下值作为输入:
$orientation = 'landscape' , 'portrait' , 'square' , 'panoramic'
我希望 PhpStorm 建议输入这些值 - 这是主要问题。
在 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