我正在寻找一个更好的解决方案下面的一个。
我想从一个调用多个类来执行各种任务的主脚本开始日志记录。
我希望所有被调用的类共享日志实例并向日志中添加消息。
例如:
主要脚本:
<?php
include 'log.php'
include 'classA.php'
include 'classB.php'
// start new logs
$log = new log('my_log_file.log');
$log->addMessage('log added outside any classes');
// continue loggin within other classes
$task_a = new classA($log);
$task_b = new classB($log);
甲级:
<?php
class classA {
function __construct($log="") {
if(is_object($log)) {
$log->AddMessage("log added from within classA");
}
}
}
最好的办法是什么?
最佳答案
您可以考虑创建注册表类并将日志对象放到它们
<?php
include 'registry.php';
include 'log.php';
include 'classA.php';
include 'classB.php';
// start new logs
$registry = new registry();
$registry->addLogger(new log('my_log_file.log'));
$registry->getLogger->addMessage('log added outside any classes');
// continue loggin within other classes
$task_a = new classA($registry);
$task_b = new classB($registry);
甲级php
<?php
class classA {
function __construct($registry="") {
if(is_object($registry)) {
$registry->getLogger()->AddMessage("log added from within classA");
}
}
}
有什么好处?如果您决定需要传递给其他类其他对象,例如数据库连接、应用程序配置或其他类,则只需修改注册表,添加到注册表新对象(例如add database),就可以在传递了注册表对象的所有类中建立数据库连接。
当然,对于某些类对象,可以只传递选定的注册表对象,而不是整个注册表