Каков наилучший способ преобразования существующего PHP-класса в Java?

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

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

edit: Есть 3 причины, по которым мне нужно преобразовать php в java.

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

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

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

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

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

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

  1. выбросить код
  2. переписать в java
  3. ????
  4. прибыль!

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

Отъезд http://www.numiton.com

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

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

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

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

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

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

Обычно я бы взял класс, созданный php5servlet, банку, доступную в tomcat & resin.

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

ура

Я не могу представить, что инструмент для этого существует. Я сделал что-то подобное с C ++ и Java. Это боль, но лучше всего импигментировать ее.

Или напишите его на C и создайте dll с jni warpper, чтобы вызвать его с Java. Это должно быть быстрым способом.

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

Я изучал Groovy как переходный язык от PHP к Java. Они (разработчики Groovy) утверждают, что он компилирует java-байтовый код так же, как и код Java.
Это также менее строго, у них есть несколько примеров перевода на их сайте.

Похоже, вы пытаетесь преобразовать PHP-код, который является процедурным в базу кода OO.

Это не столько вопрос PHP для Java, сколько парадигма. Нет автоматизированного способа сделать это, это будет грубо. Особенно, если одна база кода плохо написана.

Кстати, я бы также почему вы конвертируете? Это просто производительность? И если это так, вы ничего не можете сделать, чтобы исправить проблемы с производительностью. Я не думаю, что только переключение с одного языка на другой исправит его, вам все равно придется найти узкое место.

Я могу найти только два:

1) https://github.com/bafolts/java2php

2) http://www.runtimeconverter.com/

Существует также Caucho Resin, но это не совсем конвертер. Это реализация php внутри Java.

В Интернете есть много всего о numiton, но их сайт уже несколько лет.