2012-02-06 3 views
2

나는 PHP에 익숙하지 않으며 매우 기본적인 질문이 있습니다. 내 프로젝트의 모든 PHP 파일에서 PEAR 로깅을 설정하고 싶습니다. 어떻게해야합니까? 지금 당장, 모든 파일에서 다음 줄을 읽으십시오.디렉토리의 모든 PHP 스크립트에 대해 include를 설정하는 방법은 무엇입니까?

// Repeated lines 
require_once 'Log.php'; 
$conf = array('mode' => 0600, 'timeFormat' => '%X %x'); 
$logger = Log::singleton('file', 'out.log', 'ident', $conf); 

// Some logging... 
$logger->log("Log entry"); 

3 줄 반복은 내게 맞는 해결책이 아닌 것 같습니다. 사실 Propel이 생성 한 클래스와 동일한 문제가 있습니다. 이 문제를 어떻게 해결할 수 있습니까?

마틴

답변

3

나는 세계가 당신이 모든 페이지에해야 할 모든 일반적인 일을 포함 파일을 사용하십시오. 당신이 당신의 로거를 인스턴스화 싶어 예를 들어, 모든 페이지에 사용자의 $_SESSION와 일을 데이터베이스에 연결하고, 할, 당신은 세계가 포함 만들 수 있습니다

/includes/global.php에 혹시 함수 내에서 로그인하는 데 필요한 경우 /any/other/file.php

require_once('/includes/global.php'); 

// $logger is already defined: 
$logger->log("Log entry"); 

에서

require_once 'Log.php'; 
$conf = array('mode' => 0600, 'timeFormat' => '%X %x'); 
$logger = Log::singleton('file', 'out.log', 'ident', $conf); 

// Connect to DB 

// Do $_SESSION stuff 

, 당신은 싱글의 사본을 잡아, 또는 global 키워드를 사용할 수 있습니다 :

function test($a) 
{ 
    global $logger; 
    $logger->log('test() - ' . $a); 
} 

편집 : 마지막으로, 당신이 사용할 수있는 php.ini directive main 파일 전에 자동으로 해석 될 파일의 ​​이름을 지정 auto_prepend_file.

0

세 줄을 별도의 파일로 옮기고 require_once을 하나씩 옮깁니다.

파일 "MyLog.php"

require_once 'Log.php'; 
$conf = array('mode' => 0600, 'timeFormat' => '%X %x'); 
$logger = Log::singleton('file', 'out.log', 'ident', $conf); 

다른 파일 :

require_once 'MyLog.php'; 
$logger->log("Log entry"); 
관련 문제