1. 오류 유형: PHP 치명적인 오류
오류 유형: PHP 치명적인 오류
치명적인 오류: (d)행의 (c)에서 (a)(이전에 (b)에서 선언됨)를 다시 선언할 수 없습니다.
2. 오류 설명:
이 오류 보고서는 이미 정의된 함수를 재정의하려고 한다는 것을 나타냅니다. 여기서
a---- 반복적으로 정의된 함수 이름을 나타냅니다.
b----함수가 처음 정의되었을 때의 파일 이름과 줄 번호
c----두 번째로 함수를 정의할 때의 파일 이름
d----두 번째로 함수를 정의할 때의 줄 번호입니다.
3. 원인 및 해결책:
원인:
과 같이 함수를 정의하기 위해 동일한 이름을 두 번 연속 사용했습니다.myFunction() 함수{}
myFunction() 함수{}
결과는 다음과 같습니다
심각한 오류: 1행에서 myfunction()(이전에 선언된 in(path):2)in(path)을 다시 선언할 수 없습니다.
해결책:
선언된 함수를 찾아 다시 정의하게 된 이유가 무엇인지 확인하세요. 이전에 정의된 것을 잊어버린 경우 선언 중 하나를 삭제하면 됩니다. 예를 들어, 스크립트 파일이 매우 혼란스러운 방식으로 배열되어 있고 많은 수의 include() 및 기타 함수를 사용할 수 있으므로 혼란스러운 코드에서 아이디어를 분류하기가 어렵습니다. 하지만 PHP 버전이 비교적 새로운 경우(PHP 5.3.8+), 함수를 반복적으로 정의해야 하는 상황을 네임스페이스를 사용하면 해결할 수 있을 것 같습니다.
4 PHP 심각한 치명적 오류 처리 및 해결 예시는 다음과 같습니다
1) 같은 파일에 같은 이름의 클래스가 두 번 선언되었습니다.
예:
클래스 Foo {}
// 여기에 코드가 있습니다
클래스 Foo {}
?>
두 번째 Foo에서는 오류가 보고됩니다.
해결책: 두 번째 Foo를 제거하거나 이름을 바꾸세요.
반복되는 정의를 방지하기 위해 새 클래스를 정의할 때 해당 클래스가 이미 존재하는지 여부를 확인할 수 있습니다.
if(class_exists('SomeClass') != true)
{
// 여기에 SomeClass 클래스를 넣습니다
}
if(class_exists('SomeClass') != true)
{
//여기에 SomeClass 클래스를 넣으세요
}
2) 동일한 클래스 파일을 반복적으로 포함:
예: 특정 클래스 파일 some_class.php의 경우 a.php
"some_class.php" 포함
"some_class.php"를 포함합니다.
b.php에서
"a.php" 포함
"some_class.php" 포함
"a.php"를 포함합니다.
"some_class.php"를 포함합니다.
오류를 보고합니다.
해결책: 위의 모든 include를 include_once로 교체하세요
3) 이 클래스는 PHP 클래스 라이브러리에 내장된 클래스입니다.
판정방법 : 빈 파일에 작성
클래스컴
{
}
?>
이때 Com 클래스를 다시 선언할 수 없다는 메시지가 표시되어 해당 클래스가 PHP에 내장된 클래스임을 나타냅니다. 사용할 수 없습니다.
또한 Com과 같이 너무 대중적인 클래스 이름은 사용하지 마십시오. 이 클래스는 Linux에서 사용할 때는 정상일 수 있지만 Windows 환경에서는 실행되지 않습니다.
온라인에서 찾은 또 다른 솔루션을 기억하세요. 상황에 따라 유용할 수 있으므로 먼저 기억하세요
if (!class_exists('pageModule')){
require_once(PATH_site.'fileadmin/scripts/class.page.php');
}
위 방법은 php __autoload 클래스 로딩을 사용하는 방법에는 적용되지 않지만, __autoload가 자동으로 로드되는 문제는 이미 해결되었습니다. 동일한 클래스 이름을 찾아 이름을 바꾸면 됩니다.