如果 (false) (是的,带反斜杠)在 PHP 中是什么意思



今天早上,我收到通知,有一个新的Twig_Extensions版本可用!耶!

在将其集成到twigfiddle之前,我想看到变化。这主要是使用 class_alias 函数添加对命名空间的支持,然后添加仅包含旧类的 PSR-4 相关类。

但是每个新的(命名空间(类都是这样实现的:

<?php
namespace TwigExtensions;
require __DIR__.'/../lib/Twig/Extensions/Extension/Text.php';
if (false) {
    class TextExtension extends Twig_Extensions_Extension_Text
    {
    }
}

这个符号是什么意思?

这意味着它使用了全局命名空间中定义的 false。

经过一番研究,事实证明这个答案的其余部分是无稽之谈......我可以发誓你能够在某个时间点在PHP中做到这一点。

我认为这是绕过以下情况

<?php
namespace whywouldyoudothis;
false = true;
?>

我从未见过有人为此编写代码,但这就是我想到的。

来自 php 手册

在名称前面加上 \ 将指定该名称是必需的 全局空间,即使在命名空间的上下文中也是如此。

if (false) {
    class TextExtension extends Twig_Extensions_Extension_Text
    {
    }
}

代码嗅探器和 IDE 仍可访问该代码。但是我认为它应该在那里有弃用说明。以便通知开发人员有关使用已弃用的类的信息。

这是来自主 Twig 存储库的示例。https://github.com/twigphp/Twig/blob/v2.10.0/lib/Twig/Token.php

这是一个没有意义的代码,只是一个无法访问的代码,因为 \false 总是假的!

最新更新