>php教程 >php手册 >PHP 심각한 치명적 오류 처리:php 치명적 오류: 클래스 또는 함수를 다시 선언할 수 없습니다.

PHP 심각한 치명적 오류 처리:php 치명적 오류: 클래스 또는 함수를 다시 선언할 수 없습니다.

WBOY
WBOY원래의
2016-11-16 10:24:021487검색

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가 자동으로 로드되는 문제는 이미 해결되었습니다. 동일한 클래스 이름을 찾아 이름을 바꾸면 됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.