java nach php portieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • java nach php portieren

    Hi,

    zu Beginn muss ich zugegeben das ich keinerleih Ahnung von Java hab :oops: . Nur bisschen Javascript gemacht aber VB ist eher meine Welt hehe.

    Ich hab hier einen oben source Codebaustein in Java den ich nach PHP portiert bräuchte.

    Ich poste es mal hier im Javabereich weil ich denke das das hier wohl am ehesten hinpasst. Wäre nett wenn mir jemand erklären könnte wie das "Snipsel" genau abläuft bzw. bin ich auch für Umsetzungsvorschläge nach PHP sehr danke.

    Nunja lange rede kurzer Sinn hier mal der Code:

    Quellcode

    1. import java.util.ArrayList;
    2. import java.util.Set;
    3. import java.util.TreeMap;
    4. import java.util.TreeSet;
    5. import java.util.Iterator;
    6. public class RouteCalculate implements Runnable {
    7. private TreeMap routeMap;
    8. private TreeSet tl;
    9. private TreeSet rt;
    10. private class RoundTrip implements Comparable {
    11. private TradeRoute first;
    12. private TradeRoute second;
    13. public RoundTrip(TradeRoute f, TradeRoute s) {
    14. first = f;
    15. second = s;
    16. }
    17. public float getScore() {
    18. return (float) ( first.getScore() + second.getScore() );
    19. }
    20. public int compareTo(Object o) {
    21. if(o instanceof RoundTrip) {
    22. RoundTrip round = (RoundTrip) o;
    23. if(round.getScore() > getScore()) {
    24. return 1;
    25. } else if(round.getScore() < getScore()) {
    26. return -1;
    27. }
    28. }
    29. return 0;
    30. }
    31. public TradeRoute getRoute(){
    32. first.returnRoute = second;
    33. return first;
    34. }
    35. }
    36. public RouteCalculate(TreeMap map) {
    37. tl = new TreeSet();
    38. rt = new TreeSet();
    39. routeMap = map;
    40. }
    Alles anzeigen
    [/coderwiki]
  • An diesem Stück Code schneidet PHP sehr schlecht ab ;)

    implements Runnable? Das heißt schonmal du arbeitest mit Threads. Das kannst du unter PHP vergessen.
    Umschreiben musst du auch das Class Nesting. PHP unterstützt keine Klassen in Klassen (das ist aber kein großer Verlust).
    Auch das Überladen der Vergleichsmethoden kann PHP nicht.

    Ansonsten kannst du den Code aber übernehmen. Bei den Vergleichen musst du eben explizit compareTo aufrufen und je nachdem was du mit TreeSet vorhast, musst du dort noch Funktionen nachbauen.
  • "d0nUt" schrieb:

    An diesem Stück Code schneidet PHP sehr schlecht ab ;)

    implements Runnable? Das heißt schonmal du arbeitest mit Threads. Das kannst du unter PHP vergessen.
    Umschreiben musst du auch das Class Nesting. PHP unterstützt keine Klassen in Klassen (das ist aber kein großer Verlust).
    Auch das Überladen der Vergleichsmethoden kann PHP nicht.

    Ansonsten kannst du den Code aber übernehmen. Bei den Vergleichen musst du eben explizit compareTo aufrufen und je nachdem was du mit TreeSet vorhast, musst du dort noch Funktionen nachbauen.


    Ich selbst mach nicht viel mit PHP, aber von einem Kollegen weiß ich, dass Klassen mittlerweile unterstützt werden.

    Vielleicht wären Java-Servlets als Alternative zu PHP für dich von Interesse.

    Edit:
    Die Klasse ist nicht vollständig. Wenn du Runnable implementierst, dann fehlt mindestens die run()-Methode.
  • "Hafner" schrieb:

    "d0nUt" schrieb:

    An diesem Stück Code schneidet PHP sehr schlecht ab ;)

    implements Runnable? Das heißt schonmal du arbeitest mit Threads. Das kannst du unter PHP vergessen.
    Umschreiben musst du auch das Class Nesting. PHP unterstützt keine Klassen in Klassen (das ist aber kein großer Verlust).
    Auch das Überladen der Vergleichsmethoden kann PHP nicht.

    Ansonsten kannst du den Code aber übernehmen. Bei den Vergleichen musst du eben explizit compareTo aufrufen und je nachdem was du mit TreeSet vorhast, musst du dort noch Funktionen nachbauen.


    Ich selbst mach nicht viel mit PHP, aber von einem Kollegen weiß ich, dass Klassen mittlerweile unterstützt werden.

    Vielleicht wären Java-Servlets als Alternative zu PHP für dich von Interesse.

    Edit:
    Die Klasse ist nicht vollständig. Wenn du Runnable implementierst, dann fehlt mindestens die run()-Methode.


    Da steht ja auch nicht Klasse, sondern Klassen in Klassen :roll:
  • Ah ja, stimmt. :)
    Wer lesen kann ist klar im Vorteil. :)

    Zum Programmablauf:
    Die innere Klasse wir in dem Codeschnipsel nie aufgerufen. Da sie private ist (und unter der Voraussetzung, dass man nur den von dir abgebildeten Codeschnipsel betrachtet) ist das:

    Quellcode

    1. private class RoundTrip implements Comparable {
    2. private TradeRoute first;
    3. private TradeRoute second;
    4. public RoundTrip(TradeRoute f, TradeRoute s) {
    5. first = f;
    6. second = s;
    7. }
    8. public float getScore() {
    9. return (float) ( first.getScore() + second.getScore() );
    10. }
    11. public int compareTo(Object o) {
    12. if(o instanceof RoundTrip) {
    13. RoundTrip round = (RoundTrip) o;
    14. if(round.getScore() > getScore()) {
    15. return 1;
    16. } else if(round.getScore() < getScore()) {
    17. return -1;
    18. }
    19. }
    20. return 0;
    21. }
    22. public TradeRoute getRoute(){
    23. first.returnRoute = second;
    24. return first;
    25. }
    26. }
    Alles anzeigen

    schonmal alles toter Code.

    Quellcode

    1. public RouteCalculate(TreeMap map) {
    2. tl = new TreeSet();
    3. rt = new TreeSet();
    4. routeMap = map;
    5. }

    Das macht nichts weiter als bei der Erzeugung eines neuen RouteCalculate-Objektes die 3 Attribute zu initialisieren. tl und rt mit einem leeren Set (ist eine "Liste" bei der jedes Object nur einmal vorkommen darf) und routeMap mit der als Parameter übergebenen Map ("Liste" bei der es immer ein Schlüsselobjekt und ein Wertobject gibt. Durch den Schlüssel kann man so immer zum Wert kommen).

    Insgesammt ist der Codeschnipsel bedeutungslos. Entweder du postest die gesammte Klasse oder du sagst, was du machen willst.
  • //EDIT Sind wir heut wieder schnell, damit wäre mein erstes Postings irrelevant....

    Ich habe dir den Code mal 1:1 in PHP runtergetippt. Aber halte dich besser an das, was Hafner gesagt hat

    "Hafner" schrieb:

    Vielleicht wären Java-Servlets als Alternative zu PHP für dich von Interesse.

    "Hafner" schrieb:

    Die Klasse ist nicht vollständig. Wenn du Runnable implementierst, dann fehlt mindestens die run()-Methode.

    "Hafner" schrieb:

    Entweder du postest die gesammte Klasse oder du sagst, was du machen willst.


    Hier mein PHP Code: http://nopaste.easy-coding.de/885