zoukankan      html  css  js  c++  java
  • PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function【转】

    这篇文章主要介绍了PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function,需要的朋友可以参考下

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

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

    2、错误描述:

    该错误报告表示你正企图对已经定义过的函数进行再次定义,其中

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

    3、原因及解决方法:

    原因:你连续两次使用相同名称来定义一个函数,例如

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

    结果如下

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

    解决:

    找到已经声明过的函数,看看是什么需要导致你再次定义了它。如果只是单纯的忘记之前已经定义过,那么将其中一个声明删除掉就是。比如你的脚本文件排列异常混乱,并且你可能使用了大量的include()之类的函数,这将导致你很难从混乱的代码当中理清思路。不过,如果你的PHP版本比较新(PHP 5.3.8+)貌似就可以用命名空间来解决那种的确有重复定义函数必要的情况。

    4 PHP严重致命错误处理解决举例说明如下

    1)在同一个文件中重复声明了两次同名的类:

    例如:

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

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

    解决:去掉第二个Foo,或者重命名。

    为了防止重复定义,可以在定义一个新的类的时候判断一下这个类是否已经存在:

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

    2)重复包含相同的类文件:

    例如:对于某个类文件some_class.php,在a.php中

    include "some_class.php"; 
    include "some_class.php";
    

    在b.php中

    include "a.php";   
    include "some_class.php";   
    include "a.php";  
    include "some_class.php";
    

    就会报错。

    解决:将上述的include全部替换为include_once

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

    判断方法:在一个空文件中写入

    <?php 
    class Com 
    { 
     
        //to do
    
    } 
    ?>
    

    这时候提示Cannot redeclare class Com,说明这个类就是PHP内置的类。不能使用。

    另外,要避免使用太大众化的类名,比如Com,这个类在Linux使用可能是正常的,在Windows环境却无法运行。

    再记一个网上找到的解决方法,可能在某些场合有用,先记着

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

    上面的办法不适用于使用了php __autoload类加载的方法 ,但己经可以解决办法问题了,__autoload是自动加载的我们只要把相同类名找出来然后重命名即可。

    原文链接:https://www.jb51.net/article/104677.htm

  • 相关阅读:
    Palindrome Partitioning
    triangle
    Populating Next Right Pointers in Each Node(I and II)
    分苹果(网易)
    Flatten Binary Tree to Linked List
    Construct Binary Tree from Inorder and Postorder Traversal(根据中序遍历和后序遍历构建二叉树)
    iOS系统navigationBar背景色,文字颜色处理
    登录,注销
    ios 文字上下滚动效果Demo
    经常崩溃就是数组字典引起的
  • 原文地址:https://www.cnblogs.com/KillBugMe/p/12402286.html
Copyright © 2011-2022 走看看