如果返回值混合使用什么类型的提示? - php

function foo ($a): mixed
{
    if ($a == 1)    
        return true;
    else
        return 'foo';
}

var_dump(foo(1));

由于mixed不是真实类型,因此导致:

致命错误:未捕获的TypeError:foo()的返回值必须为
混合...的实例

有没有一种方法可以在mixed返回值中键入提示,或者您是否根本没有在这种情况下声明类型提示?

参考方案

那里有类型提示来对传递或返回的值施加一些限制。由于“混合”将完全允许任何值,因此将其用作类型提示将毫无意义,因此只需将其忽略即可。

已经有人提议在语言中添加“联合类型”,这将允许您在示例中将返回类型声明为bool|string,但尚未被接受。

您可以做的是在文档块中记录函数的返回值。 IDE和文档生成器通常会理解语法@return bool|string,然后可以添加关于返回类型为何变化以及何时期望哪种类型的描述。

当然,值得考虑的一个选项是重新考虑您的设计,并提出一个可以传达其结果而无需针对不同情况返回不同类型的函数。例如,使用异常而不是特殊的错误值,或者将getThing(boolean $asString): float|string之类的函数拆分为两个函数getThingAsFloat(): floatgetThingAsString(): string

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP-如何建议搜索字词,“你是说……?” - php

当使用不检索任何结果的术语搜索数据库时,我想允许“您是不是……”建议(例如Google)。例如,如果有人寻找“ jquyer””,它将输出“ did you mean jquery?”当然,建议结果必须与数据库内部的值匹配(我正在使用mysql)。您知道可以做到这一点的图书馆吗?我已经用谷歌搜索过,但是没有找到任何好的结果。或者,也许您有一个想法,该如何独自…