Ankündigung

Einklappen
Keine Ankündigung bisher.

Suche code-schnippsel um Funktions.Deklaration aus Code-String zu extrahieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Suche code-schnippsel um Funktions.Deklaration aus Code-String zu extrahieren

    Zu Dokumentationszwecken würde ich gerne einzelne Zeilen meines (und fremdem) Code, wo Deklarationen von Funktionen und Methoden vorgenommen werden, auf den tatsächlichen Teil der Deklaration "zusammendampfen" und, um das dann in HTTP schön darstellen zu können, hätte ich natürlich am liebsten die einzelnen Teile wie "pre-words" ("public", "static" etc.), Funktionsname, Argumente und ggf. Default Werte in einem Array oder so strukturiert im String, dass ich die einzelnen Teile leicht herauslösen und mit entsprechenden HTML code "umrahmen" kann.

    Das kann ich mir mittels token_get_all() natürlich zusammensuchen. Allerdings ist das aber doch ein nicht ganz so triviales Unterfangen, speziell wenn es vorkommen kann, dass Kommentare eingestreut sind etc.

    Nun bin ich mir sehr sicher, dass sowas schon hundertfach programmiert wurde. Warum also soll ich das Rad neu erfinden?

    Leider ... bin ich nicht fündig geworden. Ich habe in Google schon mit allen möglichen Kombinationen an Worten gesucht, aber ich lande doch meist bei irgendwelchen "token_get_all() - Seiten. Wahrscheinlich nehme ich schlicht die falschen Suchbegriffe.

    Kann mir hier evtl. jemand helfen und entweder Hinweise zu links oder zielführenden Suchbegriffen geben?

    Danke im Voraus!
    Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

  • #2
    Der phpDocumentor ist für so etwas sozusagen das Standardtool. Eine Voraussetzung für die Nutzung ist jedoch das sich der PHP-Quellcode strikt an eine Reihe bestimmter Normen hält.

    Da meine PHP-Klassen oftmals nicht so streng an offizielle Standards halten habe ich mir mal vor Jahren ein eigenes Tool geschrieben. Bin mir nicht sicher ob deine Frage darauf hinaus läuft. Kannst dir ja mal ein Beispiel anschauen ob es din die gewünschte Richtung geht. Aus dieser Klasse wird automatisch diese Dokumentation als HTML generiert. Ist aber kein 'code-schnippsel' der mal so schnell hier ins Forum gestellt werden kann.

    Kommentar


    • #3
      Hi und sorry für die lange Zeit seit Fragestellung ...

      Ich kennen den phpDocumentor, habe aber dasselbe Problem wie Du, dass ich nämlich eine eigene Art der Notation habe und ehrlich gesagt den Overhead, um phpDokcumentor-compliant zu sein, für einige meiner Klassen auch ein für ein wenig "oversized" halte.

      Zu Deinen Links: Im Grunde ist es schon das, was ich suche (oder zumindest "am Ende" in ähnlicher Form haben will). Wobei mir im Prinzip schon reichen würde, wenn ich die Zeile(n), in denen die Methoden-Definition stattfinden als solche (in einem Array) zurück bekomme. Dann kann ich mir den Rest schon selber zusammenpflücken, denn ich halte mich "intern" an bestimmte Regeln,

      Nun habe ich mich inzwischen selber "auf den Weg gemacht" und festgestellt, dass es ja gar nicht sooo dramatisch ist, wenn man sich erklaubt, einige Sonderfälle (z.B. definition über mehrere Zeilen) nicht zu berücksichtigen.

      Ich bin so vorgegangen (falls mal jemand hier drüber stolpert ... kann auch gerne den Code zur Verfügung stellen):
      1.) lass ich eine Funktion über die Datei laufen, die mir alle "T_DOC_COMMENT" rausschmeisst, aber die Zeilenanzahl beibehält.

      2.) suche ich jede Zeile des "bereinigten" Code nach trim() nach bestimmten Schlüsselworten "von vorne" ab, um das rauszufischenm was mich interessiert.

      3.) gehe ich dann mit dem Tokenizer auf die einzelne Zeile los, "zerhacke", und fische raus, was mich interessiert.

      Das alles schreibe ich in eine JSON Datei, um später dann mit einem "Beautifier" die HTML-Seiten zu generieren.

      Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

      Kommentar


      • #4
        Bei meiner speziellen Docu habe ich die Masse mit Reflection erschlagen können.
        PHP wird mit einer vollständigen Reflection-API geliefert, die die Möglichkeit der Instrospektion von Klassen, Interfaces, Funktionen, Methoden und Erweiterungen bietet.
        Da lohnt es sich das mal intensiv anzuschauen falls du es noch nicht getan hast.

        Kommentar

        Lädt...
        X