-1
我有這段代碼PHP:一個相當複雜的消息記錄問題
class Logger{
public static $messages = array();
public static function log($msg){
if(!empty($msg))
self::$messages[] = $msg;
}
}
class Model{
function foo(){
if(rand(1,5)>3) // This will only occasionally be true
Logger::log('bar2');
return 'bar1';
}
}
class Controller{
public function foo(){
$m = new Model();
Logger::log($m->foo());
}
}
$c = new Controller();
$c->foo();
print_r(Logger::$messages);
結果是
Array
(
[0] => bar2
[1] => bar1
)
我需要它是第一BAR1然後BAR2,但它不是那樣簡單它似乎。因爲我可能並不總是有bar2,所以我可能會在我顯示的特定部分之前和之後記錄其他消息,因此排序並不是真正的選擇。其他東西我不能是切換在控制器或模型中調用的函數的順序,因爲控制器使用模型返回的數據並記錄它。另外,我不能在控制器中移動bar2
的日誌記錄,因爲有多個控制器(可能還有更多未來的控制器)將調用此模型。我所能做的就是操縱記錄器類代碼,但我無法想出一個乾淨的方式來切換這兩個消息的位置。
[我會讀這個答案](http://stackoverflow.com/a/18682856) – HamZa
@HamZa叫我笨,但我似乎無法建立連接:/ –
嗯,我沒有看到任何東西複雜在這裏:由於您正在使用的記錄器沒有滿足日誌記錄的要求,很明顯,您一直在選擇錯誤的記錄器。拋出並使用滿足您要求的組件。或者你的問題到底是什麼? – hakre