Как выполнять функции прямо в heredoc и double-quoted строках

Многие сталкивались с этой проблемой.. надеюсь мой способ поможет кому-то кроме меня выполнять функции, выражения и многое другое прямо в heredoc или строке в двойных кавычках. Иногда очень полезная штуковина :)

  1. <?php
  2. // Функция-хак
  3. $__eval = create_function( '$c', 'return $c' );
  4.  
  5. // Проверяем..
  6. define( 'constant_str', 'smth string' );
  7. define( 'constant_int', 8 );
  8.  
  9. $x = 6;
  10. $y = 2;
  11.  
  12. function z( $x, $y ) { return $x * $y; }
  13.  
  14. // Примеры использования
  15. // Синтаксис: {$__eval( [expressions|variables|constants|functions|object->methods|etc] )}
  16. echo "1st: {$__eval(4+5)} text\r"; // выводит '1st: 9 text'
  17. echo "2nd: {$__eval(constant_str)} and text\r"; // выводит '2nd: smth string and text'
  18.  
  19. echo <<<HEREDOC
  20. 3rd: {$__eval( z($x, $y) + constant_int / 2)} and text again
  21. HEREDOC;
  22. // выводит '3rd: 20 and text again'

Комментариев нет:

Отправить комментарий