缘由剖析与化解办法,PHP严重致命错误处理

① 、错误类型:PHP致命错误

① 、错误类型:PHP致命错误

一 、错误类型:PHP致命错误

错误提示

Error type: PHP Fatal error

Error type: PHP Fatal error

Error type: PHP Fatal error
Fatal error: Cannot redeclare (a) (previously declared in (b)) in (c) on
line (d)

Fatal error: Cannot redeclare class ….

Fatal error: Cannot redeclare (a) (previously declared in (b)) in (c) on
line (d)

Fatal error: Cannot redeclare (a) (previously declared in (b)) in (c) on
line (d)

② 、错误描述:

从字面来看也很好精晓,表达是重复定义了类,找了一晃和谐的代码,是因为存在同名的类导致的,修改了类名就好了。

二 、错误描述:

② 、错误描述:

该错误报告表示你正谋划对已经定义过的函数进行重新定义,当中

案由剖析

该错误报告表示您正谋划对曾经定义过的函数举行重复定义,当中

该错误报告表示您正谋划对曾经定义过的函数举行重复定义,当中

a—-表示重复定义的函数名;
b—-第一回定义该函数时的文件名称及行号;
c—-第②回定义该函数时的文件名称;
d—-首回定义该函数时的行号。

1.在同二个文件中重复表明了三次同名的类:
例如:

a—-代表重复定义的函数名;

a—-代表重复定义的函数名;

叁 、原因及缓解办法:

 

b—-第二遍定义该函数时的文件名称及行号;

b—-第②回定义该函数时的文件名称及行号;

缘由:你总是五次利用相同名称来定义贰个函数,例如

 代码如下

c—-第叁遍定义该函数时的文件名称;

c—-第①回定义该函数时的文件名称;

function myFunction(){}
function myFunction(){}

<?php  
class Foo {}  
 
// some code here  
 
class Foo {}  
?> 

d—-第②遍定义该函数时的行号。

d—-第三回定义该函数时的行号。

结果如下

在第③个 Foo 的地点就会报错。

③ 、原因及缓解格局:

叁 、原因及缓解办法:

Fatal error:Cannot redeclare myfunction()(previously declared
in(path):2)in(path) on line 1

化解:去掉第二个Foo,只怕重命名。

缘由:你总是五回选择同样名称来定义2个函数,例如

缘由:你总是三次利用同一名称来定义二个函数,例如

解决:

为了避防万一重复定义,能够在概念1个新的类的时等候法庭判决断一下这几个类是或不是早已存在:

function myFunction(){}

function myFunction(){}

找到已经宣称过的函数,看看是什么样供给导致您再次定义了它。如果只是只有的遗忘在此之前曾经定义过,那么将中间一个宣称删除掉正是。比如你的脚本文件排列格外混乱,并且你大概应用了大气的include()之类的函数,那将导致你很难从繁杂的代码在那之中理清思绪。可是,如若你的PHP版本相比较新(PHP
5.3.8+)貌似就足以用命名空间来缓解那种的确有双重定义函数须要的动静。

 

function myFunction(){}

function myFunction(){}

4 PHP严重致命错误处理化解举例表达如下

 代码如下

缘由剖析与化解办法,PHP严重致命错误处理。结果如下

结果如下

1)在同3个文本中再次注明了三次同名的类:

if(class_exists(‘SomeClass’) != true)  
{  
   //put class SomeClass here  

if(class_exists(‘SomeClass’) != true)
{
   //put class SomeClass here
}

Fatal error:Cannot redeclare myfunction()(previously declared
in(path):2)in(path) on line 1

Fatal error:Cannot redeclare myfunction()(previously declared
in(path):2)in(path) on line 1

例如:

2.双重包括相同的类公事:

解决:

解决:

<?php 
class Foo {} 
// some code here 
class Foo {} 
?>

譬如说:对于有个别类公事some_class.php,在a.php中

找到已经宣示过的函数,看看是怎样须要导致你再度定义了它。要是只是只是的遗忘从前早已定义过,那么将里面一个扬言删除掉正是。比如您的本子文件排列非常混乱,并且你恐怕行使了汪洋的include()之类的函数,那将招致你很难从混乱的代码在这之中理清思绪。可是,假如您的PHP版本相比新(PHP
5.3.8+)貌似就能够用命名空间来化解那种的确有重新定义函数须求的情形。

找到已经宣称过的函数,看看是哪些供给导致您重新定义了它。借使只是仅仅的遗忘此前已经定义过,那么将中间一个扬言删除掉正是。比如你的本子文件排列非常混乱,并且你也许使用了大批量的include()之类的函数,那将招致您很难从繁杂的代码当中理清思路。可是,假如您的PHP版本比较新(PHP
5.3.8+)貌似就能够用命名空间来消除那种的确有重新定义函数要求的意况。

在其次个 Foo 的地方就会报错。

 代码如下

 

 

化解:去掉第二个Foo,或许重命名。

include “some_class.php”; 
include “some_class.php”;

4 PHP严重致命错误处理消除举例表明如下

4 PHP严重致命错误处理消除举例表达如下

为了以免再一次定义,能够在概念三个新的类的时候判断一下那几个类是还是不是曾经存在:

在b.php中

 

 

if(class_exists('SomeClass') != true) 
{ 
 //put class SomeClass here 
} 

 代码如下

1)在同三个文本中再一次注脚了一次同名的类:

1)在同3个文本中另行申明了一遍同名的类:

2)重复包含相同的类公事:

include “a.php”;  
include “some_class.php”; 
include “a.php”;
include “some_class.php”;

例如:

例如:

比如:对于某些类公事some_class.php,在a.php中

就会报错。

<?php  

<?php  

include “some_class.php”; 

杀鸡取卵:将上述的include全体替换为include_once

class Foo {}  

class Foo {}  

include “some_class.php”;

3.该类为PHP类库中放到的类。

 

 

在b.php中

判定方法:在贰个空文件中写入

// some code here  

// some code here  

include “a.php”; 
include “some_class.php”; 
include “a.php”;
include “some_class.php”;

 

 

 

就会报错。

 代码如下

class Foo {}  

class Foo {}  

消除:将上述的include全体替换为include_once

<?php  
class Com  
{  
 
}  
?> 

?>

?>

3)该类为PHP类库中置放的类。

那儿提醒Cannot redeclare class
Com,表明这几个类正是PHP内置的类。不能够利用。

在第二个 Foo 的地点就会报错。

在第三个 Foo 的地点就会报错。

看清方式:在3个空文件中写入

其余,要幸免采取太斯巴鲁化的类名,比如Com,那么些类在Linux使用大概是经常的,在Windows环境却无计可施运维。

化解:去掉第一个Foo,或然重命名。

化解:去掉第①个Foo,大概重命名。

<?php 

class Com 
{ 


} 
?>

再记3个网上找到的消除措施,恐怕在好几场所有用,先记着

为了防范再次定义,能够在概念2个新的类的时等候法庭判决断一下以此类是不是早已存在:

为了制止再度定义,能够在概念二个新的类的时等候法庭判决断一下那么些类是不是已经存在:

那会儿提醒Cannot redeclare class
Com,表达这些类就是PHP内置的类。无法采取。

 代码如下

if(class_exists(‘SomeClass’) != true)  

if(class_exists(‘SomeClass’) != true)  

其它,要防止采用太东风标致化的类名,比如Com,那些类在Linux使用或然是平常的,在Windows环境却无计可施运转。

if (!class_exists(‘pageModule’)){    
require_once(PATH_site.’fileadmin/scripts/class.page.php’);
 }

{  

{  

 

地点的法门不适用于选拔了php __autoload类加载的方法
,但己经能够消除办法难点了,__autoload是机关加载的大家即便把相同类名找出来然后重命名即可。

  //put class SomeClass here  

  //put class SomeClass here  

再记一个网上找到的缓解方法,恐怕在一些地方有用,先记着

}  

}  

if (!class_exists('pageModule')){ 
require_once(PATH_site.'fileadmin/scripts/class.page.php');
}

if(class_exists(‘SomeClass’) != true)

if(class_exists(‘SomeClass’) != true)

下边的艺术不适用于采用了php __autoload类加载的方法
,但己经能够化解办法难题了,__autoload是电动加载的我们借使把相同类名找出来然后重命名即可。

{

{

您恐怕感兴趣的篇章:

  • PHP中PDO的错误处理
  • PHP中的错误处理、非凡处理机制分析
  • php一些错误处理的法子与技能计算
  • PHP
    自定义错误处理函数trigger_error()
  • PHP
    的不行处理、错误的抛出及回调函数等面向对象的错误处理方法
  • PHP
    自定义错误处理函数的采纳详解
  • PHP 错误处理机制
  • PHP的全局错误处理详解
  • php自定义错误处理用法实例
  • PHP抓取HTTPS内容和错误处理的主意
  • 浅谈PHP中的错误处理和这个处理
  • php完毕的错误处理封装类实例

  //put class SomeClass here

  //put class SomeClass here

}

}

 

 

2)重复包涵相同的类公事:

2)重复蕴含相同的类公事:

比如说:对于有个别类公事some_class.php,在a.php中

例如:对于有些类公事some_class.php,在a.php中

include “some_class.php”;  

include “some_class.php”;  

include “some_class.php”;

include “some_class.php”;

在b.php中

在b.php中

include “a.php”;  

include “a.php”;  

include “some_class.php”;  

include “some_class.php”;  

include “a.php”;

include “a.php”;

include “some_class.php”;

include “some_class.php”;

就会报错。

就会报错。

缓解:将上述的include全体调换为include_once

竭泽而渔:将上述的include全体交替为include_once

澳门葡京备用网址 ,3)该类为PHP类库中放到的类。

3)该类为PHP类库中放到的类。

判定情势:在贰个空文件中写入

看清格局:在叁个空文件中写入

<?php  

<?php  

class Com  

class Com  

{  

{  

 

 

}  

}  

?>

?>

此时提醒Cannot redeclare class
Com,表明这一个类正是PHP内置的类。不能够采纳。

那时提醒Cannot redeclare class
Com,表达这么些类就是PHP内置的类。无法选择。

其余,要防止选择太Citroen化的类名,比如Com,那一个类在Linux使用或然是寻常的,在Windows环境却不能运转。

别的,要幸免采用太PEUGEOT化的类名,比如Com,那么些类在Linux使用或然是健康的,在Windows环境却不可能运营。

 

 

再记三个网上找到的化解措施,恐怕在某个场地有用,先记着

再记八个网上找到的缓解措施,大概在好几场面有用,先记着

 

 

if (!class_exists(‘pageModule’)){    

if (!class_exists(‘pageModule’)){    

require_once(PATH_site.’fileadmin/scripts/class.page.php’);

require_once(PATH_site.’fileadmin/scripts/class.page.php’);

}

}

地点的不二法门不适用于选拔了php __autoload类加载的方法
,但己经能够化解办法难题了,__autoload是电动加载的我们只要把相同类名找出来然后重命名即可。

地点的措施不适用于选择了php __autoload类加载的方法
,但己经能够化解办法难点了,__autoload是机关加载的大家只要把相同类名找出来然后重命名即可。

 

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website