Использование YUI Compressor в файлах JavaScript, содержащих PHP

Я хочу использовать YUI Compressor для файлов JavaScript, содержащих PHP-код, например:

<?php $include 'headerDefinitions.js.php'; ?> function hello(name) { alert('Hello ' + name); } hello('<?= $_GET["name"] ?>'); 

Это, очевидно, вызывает некоторые ошибки при работе с компрессором yui следующим образом:

 java -jar yui-compressor.jar --type js -o target-file.js.php source-file.js.php 

потому что компрессор предполагает, что даже частью PHP является JavaScript. Есть ли способ сжать JavaScript при сохранении и игнорировании частей PHP? Чтобы приведенный выше пример привел к:

 <?php $include 'headerDefinitions.js.php'; ?>function hello(a){alert('Hello '+a)}hello('<?= $_GET["name"] ?>'); 

    Это не сработает. Вы должны определить все свои функции в простых файлах .js, а затем любые динамические значения или вызовы функций на вашей странице PHP. Помимо возможности сжатия, он позволит вашим файлам .js правильно кэшироваться браузером.

    Отвечать самому себе:

    Ответ jiggys на отдельный JavaScript из PHP, пожалуй, самый чистый и должен соблюдаться, когда это возможно. Но иногда это невозможно. В моем случае я не могу разделить PHP и JavaScript, не тратя огромное количество времени (это старый и большой проект).

    Во всяком случае, YUI Compressor не снимает комментарии JavaScript, которые начинаются с /*! поэтому ключ состоит в том, чтобы окружить PHP-код в блоке комментариев следующим образом:

     /*! <?php $include 'headerDefinitions.js.php'; ?> */ function hello(name) { alert('Hello ' + name); } hello('<?= $_GET["name"] ?>'); 

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

    PHP-код в строках JavaScript не требует дополнительного внимания, поскольку они (очевидно) остаются нетронутыми в процессе сжатия:

     var myString = '<?= $_GET["name"] ?>'; 

    не нужно изменять. Вам остается только не использовать одиночные или двойные кавычки как для объявления строки строки, так и для строк в PHP-коде.