From 7f7d5e1f4427ccb9ec3cfe71e6c3d88f322c3598 Mon Sep 17 00:00:00 2001 From: Ivan Kurnosov Date: Mon, 27 Feb 2017 14:38:27 +1300 Subject: [PATCH 1/4] Replaced current/next-style loop with foreach --- src/Monolog/Logger.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index 8d63cc7b..6e76e06a 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -283,14 +283,11 @@ class Logger implements LoggerInterface // check if any handler will handle this message so we can return early and save cycles $handlerKey = null; - reset($this->handlers); - while ($handler = current($this->handlers)) { + foreach ($this->handlers as $key => $handler) { if ($handler->isHandling(['level' => $level])) { - $handlerKey = key($this->handlers); + $handlerKey = $key; break; } - - next($this->handlers); } if (null === $handlerKey) { @@ -311,7 +308,17 @@ class Logger implements LoggerInterface $record = call_user_func($processor, $record); } + reset($this->handlers); + $skip = true; while ($handler = current($this->handlers)) { + if ($skip) { + if ($key !== key($this->handlers)) { + next($this->handlers); + continue; + } + $skip = false; + } + if (true === $handler->handle($record)) { break; } From 9e43ef06d836c0a3ed9b217a7e43feb684b5021a Mon Sep 17 00:00:00 2001 From: Ivan Kurnosov Date: Mon, 27 Feb 2017 15:41:41 +1300 Subject: [PATCH 2/4] Minor code readability improvement --- src/Monolog/Logger.php | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index 6e76e06a..e4334b41 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -309,16 +309,11 @@ class Logger implements LoggerInterface } reset($this->handlers); - $skip = true; - while ($handler = current($this->handlers)) { - if ($skip) { - if ($key !== key($this->handlers)) { - next($this->handlers); - continue; - } - $skip = false; - } + while ($key !== key($this->handlers)) { + next($this->handlers); + } + while ($handler = current($this->handlers)) { if (true === $handler->handle($record)) { break; } From c411ad174ccf0d53047a72a677a034dc955c61e9 Mon Sep 17 00:00:00 2001 From: Ivan Kurnosov Date: Mon, 13 Mar 2017 09:06:46 +1300 Subject: [PATCH 3/4] Changed the "rewind loop condition" operand The `$handlerKey` might be a slightly more readable choice here --- src/Monolog/Logger.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index e4334b41..8841801e 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -309,7 +309,7 @@ class Logger implements LoggerInterface } reset($this->handlers); - while ($key !== key($this->handlers)) { + while ($handlerKey !== key($this->handlers)) { next($this->handlers); } From 59d3df2f3870c274c32f769e9814837a144aca30 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 17 Mar 2017 23:07:49 +0100 Subject: [PATCH 4/4] Add comment note for clarity --- src/Monolog/Logger.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Monolog/Logger.php b/src/Monolog/Logger.php index 8841801e..da87d30c 100644 --- a/src/Monolog/Logger.php +++ b/src/Monolog/Logger.php @@ -308,6 +308,7 @@ class Logger implements LoggerInterface $record = call_user_func($processor, $record); } + // advance the array pointer to the first handler that will handle this record reset($this->handlers); while ($handlerKey !== key($this->handlers)) { next($this->handlers);