SpiRi7
@SpiRi7

Phing и pre-processing исходного кода

Интересует вопрос препроцессинга исходного кода проекта используя phing.
Что имеется ввиду
Имеется исходных код вида:

 protected function _doImportant() {
#ifdef DEBUG
  $this->log("doing important stuff now");
#endif
  foreach ($this->import as $moreimportant) {
#ifdef DEBUG
   $this->log("as I said, important or $moreimportant");
#endif
  }
#ifdef DEBUG
  $this->log("finished doing ach so important thing");
#endif
 }



После препроцессинга, если имеется/включена директива DEBUG

 protected function _doImportant() {
  $this->log("doing important stuff now");
  foreach ($this->import as $moreimportant) {
   $this->log("as I said, important or $moreimportant");
  }
  $this->log("finished doing ach so important thing");
 }



Если нет:
 protected function _doImportant() {
    foreach ($this->import as $moreimportant) {
  
    }
 }

  • Вопрос задан
  • 2567 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Imenem
Попробуйте использовать Replace Regexp для этого. Задача позволяет реализовать поиск/замену с использованием регулярок. Или переходите на Ant, для него есть класс для препроцессинга.
Ответ написан
Aecktann
@Aecktann
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, ничего не выводит. Пытаться на этом экономить — зло, как и любая преждевременная оптимизация.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы