Klasse Typenabhänig machen

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

  • Klasse Typenabhänig machen

    Hallo Gemeinde,

    ich möchte eine Klasse typenabhänig machen, jedoch hängie ich da an 2 Problemen.

    Das erste ist, ich finde keine Funktion die mir sagt, ob der Datentyp valid ist oder nicht, dies benötige ich, weil ich ja die Typen als String übergeben muss. Den Datentyp einer Variable bekomme ich ja folgender maßen herraus:

    Quellcode

    1. gettype($value);


    Wenn ich jetzt aber eine Funktion den Type übergebe, wie kann ich prüfen ober das ein gültiger Datentyp ist?

    Quellcode

    1. setType("integer");


    Was ich machen müsste ist, meine eingabe mit alles Vorhandenen Datentypen manuell in einer If-Abfrage prüfen... das möchte ich umgehen.


    Das zweite Problem ist, bei PHP wird jede Instanz einer Klasse mit den Datentyp "object" inizialisiert.

    Quellcode

    1. $myClass = new MyClass();


    Wie würde ich das hinbekommen, das $myClass vom Typ MyClass ist?

    Ergo, was ich machen will, ist eine Klasse, die komplett Typenabhänig ist, was zwar dem PHP-Konzept etwas wiederspricht, aber das sei erstmal dahingestellt.

    Hat jemand von euch eine Idee?
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Hallo,

    das habe ich mir schon gedacht, das dass so ohne weiters nicht möglich ist... was ich gerne machen will ist zum Beispiel eine std::map An sich nicht schwer, da PHP an sich eine typenunabhängige Sprache ist, benötige ich somit schonmal keine Templates. Jedoch möchte ich eine Initialisierung meines Containers auf einen Datentyp beschränken, da das ganze sonst sehr Fehleranfällig werden kann, oder wird. Wenn man Zb: einen Ringbuffer schreiben will, ist das noch recht leicht realisierbar, da man über das Interfache Iterator auch zugriff auf den Index-Operator hat. Sprich was mir bei PHP einfach abgeht, sind Typen, und Operator-Overloading und ich habe keine Ahnung wie ich mit Operatoren selber bauen kann... Oder gibt es sowas wie Operator-Overloading? Das nächste ist, das es an sich keine Strukturen gibt, das einzigste was es gibt ist Array :(
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Mmh, das gefällt mir nicht so gut. Bei PHP kann man auch nicht in die Speicherverwaltung eingreifen, was an sich vor und nachteile hat. Aber ich habe hier was gefunden, wie man PHP-Extensions schreibt. C ist kein Problem Eine Frage wäre nur, kann ich das auch mit C++ machen? Es so gut wie keine Infos, wie man eine "Pecl" Extension schreibt. Ich habe mal ein versuch gestartet mit C++ und Swig, aber habe damit nicht mal HelloWorld zum laufen bekommen, da brauche ich garnicht erst mit Komplexeren Typen anfangen. Nun ist meine Frage, kennt jemand ein kleines Workaround wie man PHP-Extensions schreibt? Bevorzugt ist natürlich C++ aber C wäre auch ok. Hier habe ich mal was: Extension Writing Wenn da wer noch was anders hat, wäre mir damit sehr geholfen...

    so long
    jd
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Um deinen ganzen Entosiasmus ein bisschen zu stoppen ... php ist eine Scriptsprache und keine Programmiersprache.

    Zudem ist PHP Typenschwach.

    Quellcode

    1. $a = "1";
    2. $b = 2;
    3. echo $a+$b;

    In PHP gibt es mit dem Beispiel kein Problem, da dies alles automatisch geschieht.

    Du kannst schon schreiben:

    Quellcode

    1. $a = (int) "123abc";

    Daraus wird dann einfach:

    Quellcode

    1. echo $a; // 123


    Zudem besitzt php (ähnlich wie bei c# oder java) eienn Garbarge Collector, der die gesamte SPeicherverwaltung für dich übernimmt.

    Du musst nicht zwingend initialisieren oder die Variablen aus dem Speicher löschen, da dies alles automatisch geschieht.
    Wobei man sich genau diese Schritte doch angewöhnen sollte ;)