因此,PHP中的冒号有几个用途,但是,我在这个问题上已经偏离了轨道,因为我不知道它适合哪个桶.

《守则》:

<?php
class ABC {
    static function xyz() {
        echo "I don't like the alphabet";
    }
}
ABC:xyz();

// tucked away in a strange file
function xyz() {
    echo "xyz\n";
}

很明显,代码缺少了额外的:,但奇怪的是,它的工作方式就像没有任何错误一样. 你认为输出会是什么?Parse Error?对字母表的不友好 comments ?一百零二?一百零三?(好的!不是真的;Jest ,你经验丰富的PHP专家)

但实际yields 是...

xyz

好了!亲眼看看:https://onlinephp.io/c/e88355

有人知道为什么会发生这种事吗?我能找到的唯一其他线索是它在5.2版上崩溃了.

现在很明显,我只需添加:就可以了,但我真的很想知道为什么会发生这种情况,因为它呈现了一个非常奇怪的错误.然后可能会有一个解决方案来防止这种愚蠢的事情再次发生.

推荐答案

冒号还用于可以作为goto的目标的语句标签.

ABC:xyz();

echo 'foo';
goto ABC;

如果您的脚本中没有goto ABC,则该标签将被忽略.

这与onclick="javascript:xyz()"在HTML/JS中工作的原因相同.许多程序员之所以这样写,是因为他们将其与href="javascript:xyz()"混淆(其中javascript:是URI方案,表示URI的其余部分应该作为JS执行).但是onXXX属性总是包含JS,在本例中javascript:是一个被忽略的标签.

Php相关问答推荐

Laravel 10查询中的多个where子句

通过激活模板在数据库中创建表

使用WooCommerce本机产品短码时不考虑价格筛选(_SHORT CODE)

让所有具有相同名称的产品在WooCommerce中更改价格

在Symfony 6.4中将工作流动态添加到服务

在WooCommerce管理中 for each 运输方法设置添加自定义字段

Laravel服务Provider 没有向服务类注入价值

如何将LARAVEL模块路径和项目路径合并,因为当我使用模块路径时,它们会覆盖项目路径

Filament PHP v3:在禁用的表单字段上,ID 不会写入数据库

如何判断php中wordpress路径之外的文件夹是否存在?

为什么 php 只能在我的 Nginx Web 服务器的某些目录中工作?

PHP 在数组中搜索值

为什么 debug_backtrace() 不返回任何内容?

在 vue 自定义渲染器中访问变量

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

Woocommerce API 的 PHP Curl 附加参数

PHP删除具有相同键的项目,除了具有最低值的项目

在 WordPress 中使用 $wpdb 运行 MySQL 事务是否安全?

PHP 中的正则表达式,具有字符范围,但不包括特定字符

在 WooCommerce 结帐后更新用户元字段