PHP 类型提示不起作用

标签 php closures instance type-hinting

我正在尝试在我的应用程序中使用类型提示功能,但有些地方无法正常工作。我尝试了以下

define('PULSE_START', microtime(true));

require('../Pulse/Bootstrap/Bootstrap.php');


$app = new Application();

$app->run();

$app->get('/404', function(Application $app)
{
    $app->error(404);
});

我得到的不是 404 输出

Catchable fatal error: Argument 1 passed to {closure}() must be an instance of Pulse\Core\Application, none given in E:\Server\xampp\htdocs\web\pulse\WWW\Index.php on line 23

我不明白,Application 类是一个命名空间类 (Pulse\Core\Application),但我创建了一个别名,所以我认为这不是问题所在。

最佳答案

根据 none 作为传入类型值给出的事实,我认为 get 在使用闭包时不会传递参数。要将 $app 放入闭包中,您可以使用应用程序。

$app->get('/404', function() use ($app)
{
    $app->error(404);
});

并验证您的 get 方法将 $this 作为匿名函数的第一个参数传递。

关于PHP 类型提示不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793366/

相关文章:

php - 如果客户端没有查看器,则停止打开 PDF

Swift 3 嵌套函数与闭包

Javascript 闭包和前置后函数处理程序

java - 在 Java 中的方法之间使用相同的对象实例

python - wxPython:确保面板中只有一个实例处于打开状态

php - 如何通过表单添加多对多关系?

php - 同一张表上的相关项目

c - 嵌入式 C 利用复杂结构中的标志

php - Magento:如何将事件的 cms 链接添加到顶部菜单?

swift - 在 Swift 中使用闭包从函数中检索字符串值