在if语句中查找类的特殊条件?

Fre*_*hön 2 php

让我们直接进入一些上下文代码.请阅读以下内容......

(1)这很好:

new myClass();

class myClass{
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

(2)不起作用(未找到致命错误类):

if ($_POST['apikey'] == "foo") {
    new myClass();

    class myClass{
        // Stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

(3)上述解决方案:

if ($_POST['apikey'] == "foo") {        
    class myClass{
        // Stuff
    }

    new myClass();
}
Run Code Online (Sandbox Code Playgroud)

无法真正找到为什么我需要做我所做的修复它.我知道它是一种脚本语言,但为什么(1)会起作用?在我开始将它嵌套在if语句或类似语言中时,它是某种生活质量的功能吗?

Dev*_*von 7

PHP在运行之前编译并解析脚本.因此它在开始执行脚本之前就知道定义.

如果你有一个条件定义,这将被阻止,因为在脚本执行之前,编译器不可能知道该条件将等同于什么.

在我看来,你永远不应该在条件中定义类,函数或常量.这就是变量的用途.