我正在寻找一个更好的解决方案下面的一个。
我想从一个调用多个类来执行各种任务的主脚本开始日志记录。
我希望所有被调用的类共享日志实例并向日志中添加消息。
例如:
主要脚本:

<?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),就可以在传递了注册表对象的所有类中建立数据库连接。
当然,对于某些类对象,可以只传递选定的注册表对象,而不是整个注册表

09-17 00:53