Php 在if语句中查找类的特殊条件?
让我们直接跳到一些上下文代码。请阅读以下内容 (1) 这很好:Php 在if语句中查找类的特殊条件?,php,Php,让我们直接跳到一些上下文代码。请阅读以下内容 (1) 这很好: new myClass(); class myClass{ // Stuff } (2) 不工作(未找到致命错误类): (3) 上述问题的解决方案: if ($_POST['apikey'] == "foo") { class myClass{ // Stuff } new myClass(); } 我真的不明白为什么我需要做我所做的来修复它。我知道这是一种脚本
new myClass();
class myClass{
// Stuff
}
(2) 不工作(未找到致命错误类):
(3) 上述问题的解决方案:
if ($_POST['apikey'] == "foo") {
class myClass{
// Stuff
}
new myClass();
}
我真的不明白为什么我需要做我所做的来修复它。我知道这是一种脚本语言,但为什么(1)会起作用呢?是不是php中的某种生活质量功能在我开始将其嵌套在if语句或类似语句中时就不起作用了?php会在脚本运行之前编译和解析脚本。因此,它在开始执行脚本之前就知道了定义 如果您有条件定义,这将被阻止,因为在执行脚本之前,编译器不可能知道该条件等于什么
在我看来,永远不要在条件中定义类、函数或常量。这就是变量的用途。有条件地创建类和函数是一种不好的做法,会导致大量的调试问题。您应该将类放在它们自己的文件中,并使用自动加载程序加载它们(延迟加载=除非您使用它们,否则不会包含它们)。然后它们也可以重用,这是您当前的解决方案所不允许的;有条件地定义类通常不是一个好主意,带有自动加载程序的类文件效率更高。在某些情况下,这是可以接受的。例如,用于代码生成或其他特殊的事情。但前提是你知道它是如何工作的。
if ($_POST['apikey'] == "foo") {
class myClass{
// Stuff
}
new myClass();
}