2013-04-05 5 views
3

범위를 이해하고 새로운 코드가 작동하지 못하는 이유 (범위 문제라고 가정)에 어려움을 겪고 있습니다.PHP 함수 범위 오류

function infusion() { 
     require_once(PATH.'/classes/infusion.php'); //PATH is defined in WordPress from ~/wp-content/themes/theme/ 
     return new infusion(); 
    } 

클래스는 /api/ 디렉토리 내의 다른 파일에서 PATH.'/api/isdk.php' 및 연결 자격 증명에 의존 :

다음 함수는 클래스를 참조하는 파일 PATH.'/includes/custom-functions.php'입니다. PATH .'/includes/custom-functions.php'에서부터 $infusion = infusion();을 호출하고 완벽하게 작동하는 많은 다른 기능이 있습니다.

문제
나는 새로운 파일을 생성 한 : 나는 $infusion = infusion();에 접근 할 필요가 있지만 위에서 function infusion() 정의를 반복 중 하나가 동작하지 않습니다 PATH.'/includes/report.php'을; require_once();; 또는 include();을 사용하십시오. 이러한 옵션 중 3 개는 나머지 코드를 죽이기 때문에 결론에 도달 할 수 있습니다. 결론은 없습니다.

도움을 주시면 감사하겠습니다.

답변

1

코드가 네임 스페이스를 사용하지 않는다고 가정하므로 함수를 재정의하거나 클래스를 다시 포함하여 infusion 함수를 다시 선언 할 수 없습니다.

귀하의 includes/report.php 파일은 간단해야한다 : 당신이 할 수있을 수 있도록

require_once PATH.'/includes/custom-functions.php'; 

// your other code here ... 

$infusion = infusion(); 

당신이 당신의 파일을 포함하고 다른 파일/클래스가 이미 선을 따라 custom-functions.php 요구되는 경우가 있습니다 그 일을 완전히 건너 뜁니다. PATH 상수는 사용하기 전에 이미 어딘가에 (직접 또는 include 파일을 통해) 정의되어 있어야합니다. error_reportingE_ALL을 포함하도록 설정하면 해당 상수가 존재하지 않으면 오류 로그에 알림이 표시됩니다.

오류가 발생하면 오류 로그에 문제에 대한 추가 배경 정보가 제공 될 수 있습니다.

+0

좀 더 자세히 살펴 봐야 할 것입니다 ... 'custom-functions.php'가 이미 필요했던 파일이 하나도 없다는 사실을 다시 확인하면'PATH' 상수가 참조되기 전에 선언되었습니다 ,하지만'require_once();'를 추가하면 출력이 끊어 지므로 오류보고를 추가하려고합니다. – macgregor

+0

나는 같은 문제로 돌아 왔고 완전히 나를 부끄럽다! 다음과 같이 열리는 handler.php 파일이 있습니다. – macgregor