PHP Critical fatal error handling: PHP Fatal Error:cannot redeclare class or function
1. Error type: PHP fatal error
Error type:php Fatal error
Fatal Error:cannot Redeclare (a) (previously declared in (b)) and (c) on line (d)
2. Error Description:
The error report indicates that you are attempting to redefine a function that has already been defined, where
A----represents a duplicate defined function name;
b----The file name and line number of the first time the function is defined;
C----The name of the file when the function is defined for the second time;
D----The line number when the function is defined the second time.
3, Causes and solutions:
Reason: You use the same name to define a function two times in a row, for example
function MyFunction () {}
function MyFunction () {}
The results are as follows
Fatal error:cannot redeclare myfunction () (previously declared in (path): 2) in (path) on line 1
Solve:
Find the function you've already declared and see what it takes to cause you to define it again. If you simply forget that you have defined it before, then delete one of the declarations. For example, your script file is out of order and you may be using a large number of functions such as include (), which will make it difficult for you to clear your mind from the confusing code. However, if your PHP version is newer (PHP 5.3.8+) It seems that you can use namespaces to solve the situation where it is necessary to have a duplicate definition function.
4 PHP critical fatal error handling examples are explained below
1) repeated declarations of two classes of the same name in the same file:
For example:
<?php
Class Foo {}
Some code here
Class Foo {}
?>
There will be an error in the second Foo place.
Workaround: Remove the second foo, or rename it.
To prevent duplicate definitions, you can determine whether the class already exists when you define a new class:
if (class_exists (' someclass ') = True)
{
Put class SomeClass here
}
if (class_exists (' someclass ') = True)
{
Put class SomeClass here
}
2) repeat contains the same class file:
For example: For a class file some_class.php, in a.php
Include "some_class.php";
Include "some_class.php";
In the b.php
Include "a.php";
Include "some_class.php";
Include "a.php";
Include "some_class.php";
will be an error.
Workaround: Replace all of the above include with include_once
3) This class is a class built into the PHP class library.
How to determine: write in an empty file
<?php
Class Com
{
}
?>
This time prompt cannot redeclare class Com, this class is PHP built-in class. cannot be used.
In addition, to avoid using a class name that is too popular, such as COM, this class may be normal for Linux use and cannot be run in a Windows environment.
Remember a solution found on the Internet, may be useful in some situations, first remember
if (!class_exists (' Pagemodule ')) {
Require_once (Path_site. ' Fileadmin/scripts/class.page.php ');
}
The above approach does not apply to the PHP __autoload class loading method, but has been able to solve the problem, __autoload is automatically loaded we just have to find the same class name and then rename it.
Reprint Please specify: The article is reproduced from: [169it-latest and most comprehensive it information]
This article title: PHP fatal error handling: PHP Fatal Error:cannot redeclare class or function