Php и макросы (стиль lisp)? - PullRequest
       27

Php и макросы (стиль lisp)?

0 голосов
/ 09 января 2009

Привет, я изучаю LISP и хорошо, весь день я программирую php на жизнь, поэтому я возился с php.net и нашел функцию eval ... так что я начал играть!

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

$var = "echo \"FOZZ\";";
for($i = 0; $i < 100; $i++)
    $var  = "eval(\"".$var."\");";
print $var;   
eval($var);

Также, что еще интересного в eval!

Ответы [ 3 ]

1 голос
/ 01 октября 2009

Для общего случая веб-программирования я разработал библиотеку под названием xilla_tags, которая позволяет легко писать PHP-код со вкусом lisp, который может быть намного более читабельным, чем традиционный подход.

См. Теги xilla образец тегов xilla .

Что касается стиля lisp в PHP, у Джейкоба Ханнсена есть отличная статья на своем сайте, посвящённом программному обеспечению, для более общего случая.

1 голос
/ 09 января 2009

Ваше утверждение звучит как 'eval ("eval (" echo "FOZZ"; ");")'. Ваши двойные кавычки мешают друг другу и вызывают ошибку.

Возможно, вы захотите попробовать изменить первую строку на $ var = "echo \ 'FOZZ \';";

Примечание: пожалуйста, будьте осторожны, используя eval.

0 голосов
/ 09 января 2009

Это не сработает, потому что вам нужно экранировать кавычки внутри строки в кавычках. Поскольку $var содержит кавычки, вам нужно избегать кавычек на каждой итерации, вставляя их в другой слой eval.

Но, тем не менее, я не одобряю чрезмерное использование eval(), как это. Использование этого даже один раз должно быть редким и сделано только в самых необходимых случаях. eval() на любом языке программирования - это несчастный случай , ожидающий наступления.

...