类型属性是否支持可调用类型? - php

我搜寻了这个的原因,但是找不到任何原因。

我试图创建一个类型为'callable'的类型化属性。但是PHP给了我一个致命的错误“无法具有可调用类型”。在RFC中,没有提到,对于属性类型提示,callable不是允许的类型。而是有一些示例,其中对类型化属性使用“ callable”。

参见:https://wiki.php.net/rfc/typed-properties

这是什么原因呢?在线有关于此主题的讨论吗?

参考方案

提供的链接https://wiki.php.net/rfc/typed-properties中的提案状态已拒绝。

在php7.4中实现的建议在此处https://wiki.php.net/rfc/typed_properties_v2,并且有关于callable的解释:

不支持可调用类型,因为其行为是上下文
以下示例说明了此问题:

class Test {
    public callable $cb;

    public function __construct() {
        // $this->cb is callable here
        $this->cb = [$this, 'method'];
    }

    private function method() {}
}


$obj = new Test;
// $obj->cb is NOT callable here
($obj->cb)();

这意味着可以将合法值写入财产
然后继续从同一个属性中读取非法值。这个
callable伪类型的基本问题很多
consistent callables RFC中有更多详细信息。

建议的解决方法是改用Closure类型
Closure::fromCallable()一起使用。这样可以确保
callable将保持可调用性,而与作用域无关。进行讨论
处理可调用问题的其他方法,请参见Alternatives
section。

https://wiki.php.net/rfc#php_74是php7.4的所有已实现建议的列表。

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

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

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)。您知道可以做到这一点的图书馆吗?我已经用谷歌搜索过,但是没有找到任何好的结果。或者,也许您有一个想法,该如何独自…

php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php

最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…