我试图通过基于 if class_exists 的返回来保护重新声明的类。这在 Wordpress 中创建插件时很常见,因为可能有多个插件使用相同的类。使用以下简单示例:
您可以在 Youtube 上查看此内容:http://www.youtube.com/watch?v=llVTvh6ffmw
以下链接演示了问题和根本原因http://www.youtube.com/watch?v=VcNLoDvRLDc
索引.php
<?php
include_once('debug1.php');
include_once('debug2.php');
$test = new SomeClass();
echo $test->someVar;
debug1.php & debug2.php是重复文件...
<?php
if(class_exists('SomeClass')) return;
class SomeClass {
var $someVar = "test";
}
尽管有一个返回语句,我们仍然得到一个致命错误“无法重新声明类”。
附带说明:奇怪的是,该代码有 80% 的时间是通过简单地在 debug2 中添加/删除空格来工作的——我的意思是它运行一次然后就中断了。
我正在运行 PHP 版本 5.4.4。
所以我的问题是。这是预期的行为吗?如果是,我错过了什么。如果不是,我在一些 Wordpress 插件中看到了这一点,这令人担忧。
请注意:我可以让它每次都使用 else 包装,但这是更多代码......:
<?php
if(class_exists('SomeClass')) return;
else {
class SomeClass {
var $someVar = "test";
}
}