如何在 php 中输入函数的参数

How do typehint a parameter of a function in php

我在获取此函数的 return 类型时遇到问题,因为我在开关中使用了混合类型。我用过mixed,炸了。我使用了 string|bool 和几种联合类型。

* @param  $value 
* @param  string $type

public function __construct(string $type,  $value)
    {  
        $this->type    = $type;
        $this->value   = $value;
    }

我已经尝试了所有方法,但没有通过 CI/CD 管道 (AWS)

public function getValue(bool $typed = false)
    {
        if (false === $typed) {
            return $this->value;
        }

        switch ($this->type) {
            case 'boolean':
                return (bool) $this->value;
            case 'datetime':
                if (empty($this->value)) {
                    return null;
                }

                return new \DateTime($this->value);
            case 'option_tags':
                return json_decode($this->value);
            default:
                return $this->value;
        }
    }

错误 以下是错误

  Method App\Model\Resources::getValue() has no return typehint specified.  
  Parameter #1 $time of class DateTime constructor expects string, string|true given.                                 
  Parameter #1 $json of function json_decode expects string, bool|string given.

这个错误是因为你没有从 getValue()

声明你想要 return 的类型

这就是您声明 return 类型的方式

public function getValue(bool $typed = false): date

您需要为函数声明 return 类型。

简单的声明一个return类型,需要在params后面加上一个:,像这样

public function store(Request $request): JsonResponse

在现代 PHP 中,您可以提供所有可能类型的列表:

// Tweak type list your exact needs
public function getValue(bool $typed = false): bool|DateTime|null

... 或使用 mixed 如果该方法确实可以 return 任何东西:

public function getValue(bool $typed = false): mixed

在旧版本中,您只能在文档块中使用 @return tag

/**
 * @param bool $typed
 * @return mixed
 * @throws Exception
 */

我明白 PHPStan 会很乐意接受所有选择。