如何设置包含目录的所有PHP脚本?
问题描述:
我是PHP新手,我有一个非常基本的问题。我想在我的项目的所有PHP文件中设置PEAR日志记录。我如何实现这一目标?现在,在每一个单一的文件中有以下几行:如何设置包含目录的所有PHP脚本?
// 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生成的类有相同的问题。我该如何解决这个问题?
马丁
答
我会使用一个全球包括文件,做所有你需要在每个页面上做一般的东西。例如,如果你想要来实例记录器,连接到数据库,并执行与用户的$_SESSION
东西在每个页面上,你可以创建一个全球包括:
在/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 directiveauto_prepend_file
规定与在主文件之前自动解析的文件名。
答
将三条线移动到一个单独的文件和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");