1) В чем ваш вопрос? Хабр — не гугл :)
2) Не проще ли вместо препроцессинга использовать что-нибудь наподобие:
const DEBUG = TRUE;
protected function _doImportant() {
if (self::DEBUG) {
$this->log("doing important stuff now");
}
foreach ($this->import as $moreimportant) {
if (self::DEBUG) {
$this->log("as I said, important or $moreimportant");
}
}
if (self::DEBUG) {
$this->log("finished doing ach so important thing");
}
}
Const DEBUG находится в том же классе, ибо вы используете $this->log().
Хотя у меня для этого используется Log::debug($message), который в случае, если Log::DEBUG == 0, ничего не выводит. Пытаться на этом экономить — зло, как и любая преждевременная оптимизация.