为什么这个片段没有抛出错误?

问题描述 投票:5回答:1

我遇到了一些我无法解释为什么它不会在PHP中抛出错误的东西。如果这对你们中的某些人来说非常明显,或者之前已经得到过回答,那就道歉了。

这不会引起任何问题,它只是一种观察和对理解的追求。我想知道是否有人知道为什么会发生这种情况?我只是好奇,因为它看起来根本不应该起作用。我错过了什么?

PHP版本测试:PHP v7.2.12

    <?php
    class FooBar
    {
        public function foo()
        {
            anythingIWantToWrite: // this doesn't throw an error?
            return "foo";
        }

        public function baz()
        {
            baz: 'foobar'; // this doesn't throw an error?
            return "bar";
        }
    }


    $class = new FooBar();

    echo $class->foo()."\n";
    echo $class->baz();
php syntax
1个回答
6
投票

因为这是valid goto syntax,即使你实际上没有使用它。基本上,你的方法可能有一个goto声明,他们去anythingIWantToWritebaz。你没有。

<?php
class FooBar
{
    public function foo()
    {
        goto anythingIWantToWrite;
        echo 'I am skipped';

        anythingIWantToWrite:
        return "foo";
    }

    public function baz()
    {
        goto baz;
        echo 'I am skipped';

        baz: 'foobar'; // 'foobar" is string literal that simply does nothing.
        return "bar";
    }
}


$class = new FooBar();

echo $class->foo()."\n";
echo $class->baz();

Demo

© www.soinside.com 2019 - 2024. All rights reserved.