如何设置包含目录的所有PHP脚本?

时间:2012-02-06 18:37:15

标签: php

我是PHP的新手,我有一个非常基本的问题。我想在我的项目的所有PHP文件中设置PEAR日志记录。我该如何做到这一点?现在,在每个文件中都有以下几行:

// 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生成的类实际上有同样的问题。我该如何解决这个问题?

马丁

2 个答案:

答案 0 :(得分:3)

我会使用一个全局包含文件来完成您在每个页面上需要执行的所有常规操作。例如,如果您想要实例化记录器,连接到数据库,并在每个页面上使用用户$_SESSION执行操作,则可以创建全局包含:

in /includes/global.php

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
/any/other/file.php中的

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

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

如果您需要登录某个功能,可以获取单身人士的副本,也可以使用global关键字:

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

编辑最后,您可以使用php.ini directive auto_prepend_file来指定在主文件之前自动解析的文件的名称。

答案 1 :(得分: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");