Каков наилучший способ преобразовать существующий класс php в Java? - PullRequest
5 голосов
/ 12 декабря 2008

Мне было поручено преобразовать несколько классов php в классы java, что быстро становится для меня кошмаром. Я понимаю базовую структуру языка, она похожа на C. Это все вызовы функций и вызовов классов, которые, похоже, ни к чему не приводят, и тот факт, что переменная может быть объявлена ​​в середине выражения !! это кружит мою голову, о, и тот факт, что есть ноль "0" документации.

Какой метод лучший (и / или) инструмент (и / или) справочный материал для преобразования php в код Java?

edit: есть 3 причины, по которым мне приходится конвертировать php в java.

  1. Обычная причина, мой босс тоже сказал мне.
  2. php слишком медленный, иногда требуется минут для запуска запроса к серверу.
  3. php - это кошмар для масштабирования и поддержки (по крайней мере, для нас строго типизированных типов языков)

Ответы [ 15 ]

13 голосов
/ 13 декабря 2008

Вы спрашиваете о лучших практиках. Я полагаю, что хорошей практикой в ​​вашем случае является подход, приятно представленный этим человеком: использование автоматизированного инструмента, вероятно, даст плохой результат: мусор внутри, мусор вне ...

У вас есть код: проанализируйте его, если необходимо, в его широких строках. И заново создайте его на Java. Это может занять много времени, но не обязательно хуже, чем при слепом обращении. И вы можете документировать в пути, и, возможно, использовать этот анализ, чтобы найти проблемные части.

11 голосов
/ 12 декабря 2008

Человек - лучший инструмент.

Я бы попытался переписать php, чтобы удалить большинство функций php, например, на C. Тогда вам будет легко переписать на Java.

Но мне нужно спросить, зачем вам конвертировать php? Разве вы не можете обернуть php во что-то вызываемое из Java? Таким образом, вы не добавите ошибок при конвертации.

2 голосов
/ 10 октября 2010

Кто-то подразумевал, что Java не такая гибкая, как PHP: на самом деле она гораздо более гибкая (в том смысле, что ядро ​​API содержит тысячи классов и встроенные функции). Вам просто нужно изучить основные понятия обоих языков, такие как автобокс для Java, например, чтобы освободить место для динамических типов. Проверьте http://www.javaworld.com, и в настоящее время я работаю над переносом большого API с PHP на Java, это займет у меня несколько дней. Два класса, libcurl, разбор json и, возможно, сотня методов / функций.

2 голосов
/ 25 марта 2009
2 голосов
/ 13 декабря 2008

Я сказал это в вопросе PHP Optimization , и я скажу это снова здесь: если вы используете PHP из статической среды (модуль веб-сервера или FastCGI), используйте кэш кода операции, такие как APC . В противном случае PHP реинтерпретирует / перекомпилирует ваш код при каждом запросе!

2 голосов
/ 12 декабря 2008
  1. выбросить код
  2. переписать в Java
  3. ????
  4. выгода!
1 голос
/ 25 февраля 2010

Обычно я бы взял класс, сгенерированный php5servlet, банкой, доступной в tomcat & смолы.

Затем измените файл класса на Java.

ура

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

Сервер Caucho / Resin преобразует код PHP в сервлеты Java во время выполнения!

1 голос
/ 13 декабря 2008

Для полноты, я должен отметить, что для JVM существует среда выполнения PHP. Выезд Quercus .

Вы можете оставить текущую кодовую базу на PHP и просто запустить ее на JVM. Затем вы можете переписать код на Java по мере необходимости.

1 голос
/ 12 декабря 2008

В зависимости от кода PHP, это может быть почти невозможной задачей. Обратный путь намного проще. PHP - очень динамичный язык, и вы можете избежать неприятностей, которые невозможны в Java. Одна особенно разрушительная вещь - то, что переменная PHP может изменить тип во время выполнения. Хотя это редко используется, но это может случиться. Кроме того, поскольку PHP свободно набран, существует много неявных преобразований. Некоторые совпадения, а другие важны для смысла программы. И еще есть факт, что PHP-код не является строго объектно-ориентированным, как Java. Даже в объектно-ориентированных программах PHP вы обычно видите некоторую степень процедурных элементов. Они не могут быть сопоставлены непосредственно с кодом Java.

Как Пиролистик, мне любопытно, зачем вам нужно конвертировать этот код? Если это унаследованный код, не лучше ли будет поддерживать выполнение кода PHP и взаимодействовать с ним через какой-либо интерфейс службы (SOAP, RPC и т. Д.)? После этого вы можете постепенно заменять детали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...