Aar*_*nLS 316
您有一个同名的类,不止一次声明.也许通过多个包括.包含其他文件时,您需要使用类似的东西
include_once "something.php";
Run Code Online (Sandbox Code Playgroud)
防止多重夹杂物.这很容易发生,虽然并不总是很明显,因为你可以将一长串文件相互包含在内.
whi*_*dan 117
这意味着你已经创建了一个类.
例如:
class Foo {}
// some code here
class Foo {}
Run Code Online (Sandbox Code Playgroud)
第二个Foo会抛出错误.
Sam*_*Sam 55
当您在页面中多次声明一个类时会发生这种情况.您可以通过使用if语句(如下所示)包装该类来修复它,或者您可以将其放入单独的文件中并使用require_once()
,而不是include()
.
if (!class_exists('TestClass')) {
// Put class TestClass here
}
Run Code Online (Sandbox Code Playgroud)
有时这是由于PHP的FastCGI中的一些错误而发生的.
尝试重新启动它.在Ubuntu它是:
service php-fastcgi restart
Run Code Online (Sandbox Code Playgroud)
使用autoload
如下所示时我遇到了同样的问题:
<?php
function __autoload($class_name)
{
include $class_name . '.php';
}
__autoload("MyClass1");
$obj = new MyClass1();
?>
Run Code Online (Sandbox Code Playgroud)
在其他课堂上有:
namespace testClassNamespace;
class MyClass1
{
function __construct()
{
echo "MyClass1 constructor";
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案是namespace testClassNamespace;
在两个文件的示例中保持命名空间兼容性.