PHP4 к [закрытой] миграции PHP5

Вам нужно понять, что Java / JSP - это просто производитель кода HTML / CSS / JS. Итак, все, что вам нужно сделать, это просто позволить JSP распечатать переменную Java, как если бы она была переменной JavaScript, и что сгенерированный вывод кода HTML / JS синтаксически корректен.

При условии, что переменная Java доступна в область EL с помощью ${foo}, вот несколько примеров, как ее напечатать:



...

Представьте, что переменная Java имеет значение "bar", тогда JSP в конечном итоге сгенерирует этот HTML-код, который вы можете проверить с помощью rightclick, Просмотреть источник в веб-браузере:



...

Обратите внимание, что эти одиночные кавычки, таким образом, являются обязательными для представления переменная с строкой в ​​JS. Если вы использовали var foo = ${foo}; вместо этого, тогда он будет печатать var foo = bar;, который может закончиться ошибками «bar undefined», когда вы пытаетесь получить доступ к нему дальше в JS-коде (вы можете увидеть ошибки JS в консоли JS веб-разработчик браузера, который вы можете открыть, нажав F12 в Chrome / FireFox23 + / IE9 +). Также обратите внимание, что если переменная представляет собой число или логическое значение, которое не нужно указывать, то оно будет работать нормально.

Если переменная возникает из пользовательского ввода, чтобы учесть дыры XSS-атаки и JS, ускоряя . В нижней части нашей страницы wiki вы можете найти пример, как создать пользовательскую функцию EL, которая ускользает от переменной Java для безопасного использования в JS.

Если переменная является бит более сложный, например Java-компонент или его список или карту, то вы можете использовать одну из многих доступных JSON-библиотек для преобразования объекта Java в строку JSON. Вот пример, предполагающий Gson.

String someObjectAsJson = new Gson().toJson(someObject);

Обратите внимание, что таким образом вам больше не нужно печатать его в качестве цитируемой строки.


См. Также:

10
задан ejunker 9 August 2008 в 03:49
поделиться

4 ответа

Я также когда-то работал над приложением, которое использовало поддержку XML PHP4 вполне в большой степени и потребует, чтобы довольно мало работы переместилась в PHP5.

Одно из других существенных изменений, на которые я смотрел в то время, было изменением обработки по умолчанию параметров функции. В PHP4, если я помню, они были передачей копией, если Вы не указали иначе, но в PHP5 изменяется на передачу ссылкой по умолчанию. В правильно написанном коде, который, вероятно, не будет иметь большое значение Вам, но это могло, конечно, вызвать проблемы.

Я думаю еще одна вещь, которую я нашел измененным, то, что объектам больше не позволяют перезаписать их 'это' поле. Я сказал бы, что это было действительно плохой идеей для начала (и я думаю, что это не могла быть намеренная функция в PHP4), но я, конечно, нашел несколько частей нашей системы, которая полагалась на него.

Надеюсь, некоторые изо что помогают.

8
ответ дан 4 December 2019 в 00:27
поделиться

Лучший совет, который я мог дать любому работающему с PHP4, является этим:

error_reporting( E_ALL );

Это в значительной степени скажет Вам точно, что необходимо сделать.

2
ответ дан 4 December 2019 в 00:27
поделиться

У нас было приложение, которое положилось в большой степени на функции PHP 4 XML DOM, и оно потребовало, чтобы большое переоборудование переключило PHP 5.

Кроме того большинство изменений было улучшениями вещей как обработка ошибок (для использования в своих интересах исключений) и Классы PHP.

1
ответ дан 4 December 2019 в 00:27
поделиться

ООП является одним из самых больших различий. Это не повредится как PHP4, и стили ООП PHP5 являются взаимозаменяемыми, но я рекомендовал бы использовать в своих интересах новые стили ООП PHP5. Это не огромный объем работы для преобразования существующих классов в PHP5, и это действительно дает Вам некоторые дополнительные волшебные методы, которые могут помочь решить некоторые существующие взломы (я не забываю иметь близость, бесполезную __ toString эквивалентный метод в большинстве классов).

1
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: