2012-02-06 4 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

私は、グローバルを使用すると思いますが、すべてのページに行うために必要なすべての一般的なことを行い、ファイルが含まれています。 /includes/global.phpで

:あなたは、あなたのロガーをインスタンス化してデータベースに接続し、ユーザの $_SESSIONすべてのページにで物事をやりたいと思います場合たとえば、あなたはグローバル含んを作成することができます/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 directiveauto_prepend_fileを使用することができます。

0

3つの行を別々のファイルに移動し、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"); 
関連する問題