chocosuechtig: CMS (PHP-CODE in DB)

Hi!
Ich möchte ein kleines CMS schreiben in PHP und nun stellt sich mir folgende Frage:

Ich möchte die Seiteninhalte in einer Datenbanktabelle speichern. Manche meiner Seiten (die eigentlichen Seiten zum bearbeiten der Tabelle via Formular eingeschlossen) beinhalten jedoch auch PHP-code. Nun kann ich den ja nicht einfach mit echo ausgeben. Wie mach ich das also am besten? Die eval-function ist auch nicht so gut, denke ich.

Außerdem möchte ich die Inhalte gerne mit BB-Code gestalten und dann in HTML umwandeln lassen. Gibt es da ne Klasse für?

============================
Mfg chocosuechtig

  1. Hello,

    vollständiger PHP-Code in der DB ist immer noch eine schlechte Idee.
    Ich habe das in einem eigenen CMS vor sechs Jahren auch versucht und es gibt bis heute nicht die notwendige Funktionalität in PHP, um soetwas sicher aufbauen zu können. Das CMS funktionierte nur deshalb lange auch online, weil bei der Pflege extrem strenge Regeln eingehalten wurden.

    PHP kennt keine Private Functions

    PHP kann keine Funktionen bzw. Includes wieder entladen

    In die DB gehören dann folglich nur Funktionsargumente, Attribute, Parameter und natürlich die reinen Daten. Was wunderbar funktioniert in der DB ist das CSS, denn das ist ja "cascading".

    Überleg Dir also gut, wie Du Daten, Masken (Templates) und Funktionen voneinander trennst.

    Die allgemeinen Funktionen gehören dann in eine Librairy, die man mit require_once() als erstes in jedes Script einbindet.
    Speziellere Funktionen werden dann nur dazugebunden, wenn man sie im Script wirklich benötigt.

    Eine echte Objektorientierung ist mit PHP also nicht erreichbar, da auch die PHP-OOP keine PRIVATE FUNCTIONS zulässt. Das wurde erst neulich hier diskututiert.

    Ich will Dich aber nicht davon abhalten, es zu versuchen.
    Vielleicht findest Du ja die Lücke, die ich seit über sechs Jahren suche ;-)

    siehe auch den Thread https://forum.selfhtml.org/?t=160383&m=1043044
    Du solltest Dich mit Phil kurzschließen. Gemeinsam geht's leichter.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Hello,

      Hello,

      vollständiger PHP-Code in der DB ist immer noch eine schlechte Idee.
      Ich habe das in einem eigenen CMS vor sechs Jahren auch versucht und es gibt bis heute nicht die notwendige Funktionalität in PHP, um soetwas sicher aufbauen zu können. Das CMS funktionierte nur deshalb lange auch online, weil bei der Pflege extrem strenge Regeln eingehalten wurden.

      PHP kennt keine Private Functions

      PHP kann keine Funktionen bzw. Includes wieder entladen

      In die DB gehören dann folglich nur Funktionsargumente, Attribute, Parameter und natürlich die reinen Daten. Was wunderbar funktioniert in der DB ist das CSS, denn das ist ja "cascading".

      Überleg Dir also gut, wie Du Daten, Masken (Templates) und Funktionen voneinander trennst.

      Die allgemeinen Funktionen gehören dann in eine Librairy, die man mit require_once() als erstes in jedes Script einbindet.
      Speziellere Funktionen werden dann nur dazugebunden, wenn man sie im Script wirklich benötigt.

      Eine echte Objektorientierung ist mit PHP also nicht erreichbar, da auch die PHP-OOP keine PRIVATE FUNCTIONS zulässt. Das wurde erst neulich hier diskututiert.

      Ich will Dich aber nicht davon abhalten, es zu versuchen.
      Vielleicht findest Du ja die Lücke, die ich seit über sechs Jahren suche ;-)

      siehe auch den Thread https://forum.selfhtml.org/?t=160383&m=1043044
      Du solltest Dich mit Phil kurzschließen. Gemeinsam geht's leichter.

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Hello,

        siehe auch den Thread https://forum.selfhtml.org/?t=160383&m=1043044
        Du solltest Dich mit Phil kurzschließen. Gemeinsam geht's leichter.

        siehe auch den Thread https://forum.selfhtml.org/?t=160383&m=1043044
         Du solltest Dich mit Phil kurzschließen. Gemeinsam geht's leichter.

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        1. Hello,

          es funktioniert einfach nicht, dass ich das "my/" aus der URi wieder rausbekomme.

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. Moin!

            es funktioniert einfach nicht, dass ich das "my/" aus der URi wieder rausbekomme.

            Wieso?

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
            1. Hallo,

              Wieso?

              die Frage war zwar nicht an mich gerichtet, aber ich möchte trotzdem meine letzte Antwort richtig stellen.
              Irgendwie hab ich kurz den Zusammenhang zwischen Text oben und Zitat im Eingabefeld unten verloren.

              Grüße, Matze

            2. Hello,

              Wieso?

              Das weiß ich eben auch nicht.
              Ich habe die Vorschau aufgerufen, und gemerkt, dass ich das "my/" im Link vergessen hatte herauszunehmen.

              Das habe ich dann im Bearbeitungsfeld (Textarea) gemacht, und wieder auf Vorschau geklickt.
              Danach stand es im Vorschautext immer noch, obwohl es in der Textarea korrigiert zurückgegeben wurde.

              Ich habe dann auch Absenden geklickt und siehe da, im Posting war das "my/" wieder drin.
              Nochmal probiert, diesmal den Vorschauprozess mehrmals durchlaufen.

              Trotzdem das Resultat, wie Du sehen kannst.

              Harzliche Grüße vom Berg
              http://bergpost.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

              1. Hi Tom,

                Trotzdem das Resultat, wie Du sehen kannst.

                Du bist glaube ich der Intelligenz des Forums aufgesessen ;-)

                Für die Anzeige des Postings für *dich*, als registrieren User, setzt das Forum das /my/ natürlich wieder in die URL rein, damit du das Posting mit deinen persönlichen Einstellungen angezeigt bekommst. Wenn du das Forum mal ohne /my/ aufrufst, dann dein Posting anguckst (ohne /my), dann ist auch der Link ohne /my/, im Gegensatz dazu, wenn du es über die personalisierte Seite aufrufst.

                Viele Grüße,
                  ~ Dennis.

                1. Moin!

                  Trotzdem das Resultat, wie Du sehen kannst.

                  Du bist glaube ich der Intelligenz des Forums aufgesessen ;-)

                  Für die Anzeige des Postings für *dich*, als registrieren User, setzt das Forum das /my/ natürlich wieder in die URL rein, damit du das Posting mit deinen persönlichen Einstellungen angezeigt bekommst. Wenn du das Forum mal ohne /my/ aufrufst, dann dein Posting anguckst (ohne /my), dann ist auch der Link ohne /my/, im Gegensatz dazu, wenn du es über die personalisierte Seite aufrufst.

                  Und das ist schon seit sehr vielen Jahren so, dass das Forum Links auf sich selbst erkennt (egal ob relativ oder absolut angegeben), und passend zur jeweiligen Situation den Link mit /my ausgibt, oder ohne.

                  Mich wundert, wieso Tom das jetzt erst auffällt. So wenige Links setzt er doch nicht.

                  - Sven Rautenberg

                  --
                  "Love your nation - respect the others."
                2. Hello Dennis, hello Sven,

                  Du bist glaube ich der Intelligenz des Forums aufgesessen ;-)

                  Das hatte ich tatsächlich noch nicht mitbekommen, dass das inzwischen automatisch geht.

                  Und "mehrere Jahre" wage ich auch zu bezweifeln.
                  Ich habe mir das angewöhnt, weil es früher sonst immer Probleme gab für "Normaluser".
                  Es kann bestenfalls seit Mai 2006 drin sein. Denn erst seit dem habe ich den Aufbau der kleinen Zeitung betrieben und nur noch sehr wenig Zeit für meine anderen Interessen gehabt...

                  Ist ja fein, dass ich die Links nicht mehr nachbessern muss.

                  Harzliche Grüße vom Berg
                  http://bergpost.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                  1. Hallo Tom,

                    Es kann bestenfalls seit Mai 2006 drin sein.

                    Christian hat das vor fast 5 Jahren implementiert, das war praktisch direkt nach Inbetriebnahme des CForums, das das alte "Selfforum" in Perl ersetzt hat.

                    Viele Grüße,
                    Christian

                    1. Hello,

                      Christian hat das vor fast 5 Jahren implementiert, das war praktisch direkt nach Inbetriebnahme des CForums, das das alte "Selfforum" in Perl ersetzt hat.

                      *Huch*

                      Da muss ich aber wirklich lange geschlafen haben :-(

                      Sorry, es gibt eben Dinge, die gehen immer an einem vorbei.

                      Harzliche Grüße vom Berg
                      http://bergpost.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        2. Hallo Tom,

          momentan scheint irgend etwas nicht zu stimmen.

          Ich hab auch nicht nur in diesem Thread Probleme alles richtig zu lesen.

          Grüße, Matze

    2. Hallo,

      Eine echte Objektorientierung ist mit PHP also nicht erreichbar, da
      auch die PHP-OOP keine PRIVATE FUNCTIONS zulässt. Das wurde erst
      neulich hier diskututiert.

      Kannst Du mir den Thread mal bitte zeigen oder ggfs. kurz
      schreiben was da nicht moeglich sein soll?

      Danke
      Thes

      1. Hello,

        Eine echte Objektorientierung ist mit PHP also nicht erreichbar, da
        auch die PHP-OOP keine PRIVATE FUNCTIONS zulässt. Das wurde erst
        neulich hier diskututiert.

        Kannst Du mir den Thread mal bitte zeigen oder ggfs. kurz
        schreiben was da nicht moeglich sein soll?

        Der Thread ist schon im Archiv.
        Ich suche mal danach.

        Auch PHP OOP gestgattet es nicht, Funktionen in Funktionen zu deklarieren, die dann nur dieser Hüllfunktion zur Verfügung steht. So habe ich das in Erinnerung.

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        1. Moin!

          Auch PHP OOP gestgattet es nicht, Funktionen in Funktionen zu deklarieren, die dann nur dieser Hüllfunktion zur Verfügung steht. So habe ich das in Erinnerung.

          Stimmt, diese Eigenart von z.B. Pascal gibts in PHP nicht, weil eine Funktionsdeklaration erst zur Laufzeit wirksam wird - was sicherlich diverse selten genutzten Vorteile hat, aber nichts daran ändert, dass sämtliche derartig deklarierten Funktionen im globalen Scope angelegt werden.

          Aber das hat nichts mit privaten Funktionen in Objekten zu tun - die existieren in PHP 5 selbstverständlich.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
          1. Hello,

            Aber das hat nichts mit privaten Funktionen in Objekten zu tun - die existieren in PHP 5 selbstverständlich.

            Das war mir schon klar.

            Aber man kann nicht für jeden Datensatz, der aufgerufen wird, das gesamte Objekt neu instantiieren. Das würde dermaßen viel Speicher fressen, dass man keine Bildschirmseite vollbekommen würde.
            Und für jede Funktion eine eigene Klasse schreiben?
            Das ist doch auch irgendwo hirnrissig, oder?

            Das eigentliche Problem ist das "inhibit redeclare"
            Das müsste man irgendwie ausschalten können für einzelne Funktionen.
            Dann könnte man die zur Laufzeit beliebig oft überschreiben (über ihren Namen!) und gut wär's.

            Über eine "array of functions" ist das ja auch jetzt schon möglich.

            Hier geht es ja aber darum, dass PHP-Quellcode in einer DB stehen soll.
            Wenn der nun durch ungeschickt gehwählte Relationen mehrfach geladen wird (mit eval()), dann kracht es.

            "Cascading" oder Überladung wäre da schon angenehmer.

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

            1. Moin!

              Aber das hat nichts mit privaten Funktionen in Objekten zu tun - die existieren in PHP 5 selbstverständlich.

              Das war mir schon klar.

              Aber man kann nicht für jeden Datensatz, der aufgerufen wird, das gesamte Objekt neu instantiieren. Das würde dermaßen viel Speicher fressen, dass man keine Bildschirmseite vollbekommen würde.

              Worauf willst du eigentlich hinaus? Datensatz - gesamtes Objekt - Speicher fressen? Hä? Sinn? Begründung?

              Und für jede Funktion eine eigene Klasse schreiben?
              Das ist doch auch irgendwo hirnrissig, oder?

              Was stellst du dir da vor?

              Du hast an irgendeiner Stelle in einer Methode einer Klasse die Notwendigkeit erkannt, dass sich wiederholender gleichartiger Code offenbar in einer Funktion besser aufgehoben ist. Also: Auslagerung des Codes in eine Funktion.

              Nun soll die Funktion aber nicht der gesamten Welt zur Verfügung stehen. Also Auslagerung in eine private Methode des Objekts. Fertig.

              Meinst du nicht, dass PHP so schlau ist, und den Code definierter Klassen nur einmal in den Speicher zu tun, und alle Datenbestandteile einer Instanz schön davon abgetrennt zu halten? Welchen Vorteil sollte es also haben, wenn man Funktionen auch innerhalb von Funktionen definieren könnte - außer dass der Zugriff der Funktionen, wenn man dem Vorbild von Pascal folgt, dadurch nicht nur eingeschränkt wäre auf lediglich die Methoden der Klasse, sondern sogar nur auf Aufrufe innerhalb der definierenden Methode.

              Wenn das Argument lautet, dass man ja dadurch gewinnen würde, dass der Zugriff eben garantiert nur aus dieser einen definierenden Methode funktioniert - sorry, dann lautet das Gegenargument, dass es nicht sein kann, dass man sich selbst als Programmierer so schlecht im Griff hat, dass man sich nicht selbst kontrollieren kann, genau dieses eben auch mit einer privaten Methode nicht zu tun.

              Oder dass es vermutlich ziemlicher Schwachsinn ist, sich in dieser Weise zu beschränken, da die separierte Funktion ja durchaus auch anderswo noch relevant sein dürfte - oder sie so winzig ist, dass es aus performancetechnischer Sicht eher unsinnig ist, den Overhead des Funktionsaufrufes in Kauf zu nehmen.

              Das eigentliche Problem ist das "inhibit redeclare"
              Das müsste man irgendwie ausschalten können für einzelne Funktionen.
              Dann könnte man die zur Laufzeit beliebig oft überschreiben (über ihren Namen!) und gut wär's.

              Es gibt in PHP ja Funktionen, die Funktionen löschen.

              Hier geht es ja aber darum, dass PHP-Quellcode in einer DB stehen soll.
              Wenn der nun durch ungeschickt gehwählte Relationen mehrfach geladen wird (mit eval()), dann kracht es.

              Lass mal das OP-Problem außen vor. Darum geht es beim Thema "lokale Funktion" gar nicht.

              "Cascading" oder Überladung wäre da schon angenehmer.

              Wie meinen?

              - Sven Rautenberg

              --
              "Love your nation - respect the others."
              1. Hello,

                Worauf willst du eigentlich hinaus? Datensatz - gesamtes Objekt - Speicher fressen? Hä? Sinn? Begründung?

                Hast Du den Thread auch ganz bestimmt von oben gelesen?

                Harzliche Grüße vom Berg
                http://bergpost.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                1. Moin!

                  Worauf willst du eigentlich hinaus? Datensatz - gesamtes Objekt - Speicher fressen? Hä? Sinn? Begründung?

                  Hast Du den Thread auch ganz bestimmt von oben gelesen?

                  Sollte mir deiner Ansicht nach ein wichtiger Aspekt entgangen sein, wäre es dir ja ein Leichtes, direkt dorthin zu verlinken.

                  - Sven Rautenberg

                  --
                  "Love your nation - respect the others."
                  1. Hello,

                    Sollte mir deiner Ansicht nach ein wichtiger Aspekt entgangen sein, wäre es dir ja ein Leichtes, direkt dorthin zu verlinken.

                    Später. Ich muss dazu alte Kisten aufmachen. Dazu habe ich im Moment keine Zeit.
                    Das finde ich jetzt selber schade, denn diese Idee mit PHP-Code in der Datenbank taucht hier immer wieder auf und wir haben das seinerzeit auch hin und her diskutiert und waren zu dem Entschluss gekommen, dass es doch sinnvoll sein könnte. Damals gab es aber auch PHP 5 noch nicht und essen OOP.
                    Wir haben das alles mit PHP 2 gemacht...

                    Aber vielleicht bist Du ja trotzdem mal so kooperativ, und versuchst Dich in die Aufgabenstellung des OP zu versetzen.

                    Harzliche Grüße vom Berg
                    http://bergpost.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                    1. Moin!

                      Das finde ich jetzt selber schade, denn diese Idee mit PHP-Code in der Datenbank taucht hier immer wieder auf und wir haben das seinerzeit auch hin und her diskutiert und waren zu dem Entschluss gekommen, dass es doch sinnvoll sein könnte. Damals gab es aber auch PHP 5 noch nicht und essen OOP.

                      Ich dachte, wir diskutieren in diesem Zweig private Funktionen bzw. Methoden?

                      - Sven Rautenberg

                      --
                      "Love your nation - respect the others."
                      1. Hello,

                        Ich dachte, wir diskutieren in diesem Zweig private Funktionen bzw. Methoden?

                        Das würde ich auch zu gegebener Zeit gerne fortsetzen, aber nicht unter Zeitdruck.
                        Ich hatte dem OP nur meine Erfahrungen mitteilen wollen, was aber nicht daran hindern sollte, selber wieder kräftig dazuzulernen. Nur eben leider jetzt nicht.

                        Harzliche Grüße vom Berg
                        http://bergpost.annerschbarrich.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                        Nur selber lernen macht schlau
                        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          2. Hallo Sven,

            Funktionen in Funktionen
            Stimmt, diese Eigenart von z.B. Pascal gibts in PHP nicht

            Ist da nicht bereits etwas im Design falsch, wenn solch
            eine Implemetierung benoetigt wird(*)?

            Ich meine, ich denke da an private Methode, anonyme Klassen oder
            anonyme Properties (und noch einige andere Meoglichkeiten).

            Schoene Gruesse,
            Thes

            * ueber ein Beispiel wuerde ich mich freuen ;-)

            1. Hello,

              Ist da nicht bereits etwas im Design falsch, wenn solch
              eine Implemetierung benoetigt wird(*)?

              Nö, ob die Funktion auf dem Stack oder auf dem Heap, bzw im Codesegment abgelegt wird, ist absolut nicht egal. (das zum alten Vorstellungsmodell)

              Es geht ja um temporär gültige Funktionen. Wenn sie ihr Ergebnis geliefert hat, soll sie sich gefälligst in Luft auflösen. Wird sie später unter gleichem Namen wieder geladen, dann ist es eine neue Variante (oder auch nicht)...

              Harzliche Grüße vom Berg
              http://bergpost.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

              1. Hallo Tom,

                Stack oder auf dem Heap, bzw im Codesegment

                Aha, so sieht das also aus, Tom?
                Bullshit-Bingo ueberspielt nicht dein "Fachwissen"

                Es geht ja um temporär gültige Funktionen. Wenn sie ihr Ergebnis
                geliefert hat, soll sie sich gefälligst in Luft auflösen. Wird sie
                später unter gleichem Namen wieder geladen, dann ist es eine neue
                Variante (oder auch nicht)...

                Wie bereits erwaehnt. Anonyme Methoden, anonyme Klassen, Lambda
                Expressions, Extension Methods oder Delagtes erledigen koennen dies
                erledigen.

                Gruss,
                Thes

            2. Moin!

              Hallo Sven,

              Funktionen in Funktionen
              Stimmt, diese Eigenart von z.B. Pascal gibts in PHP nicht
              Ist da nicht bereits etwas im Design falsch, wenn solch
              eine Implemetierung benoetigt wird(*)?

              Die Frage ist halt, was durch solch ein Feature gewonnen würde. In einer kompilierenden Sprache, die am Ende Maschinencode erzeugt, kann man sich die Verwendung von lokalen Funktionen ja durchaus als Optimierungsmöglichkeit des Kompilats erklären.

              Aber während man in Pascal eben zwischen Funktionen und Prozeduren unterscheidet, und strukturierte Variable (RECORDs) sowie strikte Typisierung hat, hat man das alles in PHP eben nicht - und auch keine lokalen Funktionsdefinitionen. Es bringt wenig, diesen Punkt zu diskutieren - das ist eben so.

              Ich meine, ich denke da an private Methode, anonyme Klassen oder
              anonyme Properties (und noch einige andere Meoglichkeiten).

              PHP erlaubt Lambda-Funktionen. Die tun das, was man so in etwa als "private Funktion" bezeichnen könnte, wenngleich auch sie im globalen Scope definiert werden - aber wenn man ihren Namen nicht kennt, wird der Zugriff halt schwierig. Wobei man dieses Argument ja auch auf jede andere definierte Funktion anwenden könnte.

              - Sven Rautenberg

              --
              "Love your nation - respect the others."
        2. Hallo,

          Der Thread ist schon im Archiv.

          Das war eigentlich nur rhetorisch gmeint.. ;)
          Du wirst ihn nicht finden, denn mit absoluter Sicherheit
          ist das moeglich.

          Gruesse,
          Thes

          1. Hello,

            Der Thread ist schon im Archiv.
            Das war eigentlich nur rhetorisch gmeint.. ;)
            Du wirst ihn nicht finden, denn mit absoluter Sicherheit
            ist das moeglich.

            Zeig mal bitte.
            Private Functions, nicht von Objekten, sondern von Funktionen!
            Wenn das doch ginge, würde ich zur Belohnung glatt nicht küssen, anderenfalls weiß ich nicht *fg*

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

            1. Hello Tom,

              verdrehe nicht meine Worte.

              Deine Aussage war woertlich:

              "Eine echte Objektorientierung ist mit PHP also nicht erreichbar, da
              auch die PHP-OOP keine PRIVATE FUNCTIONS zulässt. Das wurde erst
              neulich hier diskututiert."

              Punkt.

              Gruss,
              Thes

      2. Hello,

        Eine echte Objektorientierung ist mit PHP also nicht erreichbar, da
        auch die PHP-OOP keine PRIVATE FUNCTIONS zulässt. Das wurde erst
        neulich hier diskututiert.

        Ich weiß nicht, ob es dieser war: http://forum.de.selfhtml.org/archiv/2007/8/t157361/#m1023733

        Es muss eigentlich noch einen anderen geben, denn ich hatte da die OOP als Abhilfe für das Problem empfohlen und wurde dann darüber informiert, dass es leider nicht so sei...

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. Hallo,

    Außerdem möchte ich die Inhalte gerne mit BB-Code gestalten und dann in HTML umwandeln lassen. Gibt es da ne Klasse für?

    immer wieder gerne empfohlen: die BBCode-Parserklasse von Christian Seiler.

    Freundliche Grüße

    Vinzenz

  3. Moin!

    Ich möchte die Seiteninhalte in einer Datenbanktabelle speichern. Manche meiner Seiten (die eigentlichen Seiten zum bearbeiten der Tabelle via Formular eingeschlossen) beinhalten jedoch auch PHP-code. Nun kann ich den ja nicht einfach mit echo ausgeben. Wie mach ich das also am besten? Die eval-function ist auch nicht so gut, denke ich.

    Ich halte es für extrem ungünstig, ein geteiltes System zu erfinden, in dem der Hauptteil des PHP-Codes in Dateien und selektiv weiterer PHP-Code in der Datenbank gespeichert ist.

    Ziehe dir ein vernünftiges Template-System wie Smarty heran. Damit hast du alle Freiheiten in allen Eventualfällen, die man sich nur denken kann. Deine Seitentemplates sowie die darin einzufüllenden Daten, und an bestimmten Stellen auch Funktionsaufrufe mit passenden Parametern, lassen sich damit problemlos realisieren, ohne dass man sich die Gefahren durch eval() ins Haus holt.

    Außerdem möchte ich die Inhalte gerne mit BB-Code gestalten und dann in HTML umwandeln lassen. Gibt es da ne Klasse für?

    Das dürfte dann eigentlich kaum noch notwendig sein, aber ließe sich selbstverständlich z.B. als Ausgabefilter in Smarty integrieren.

    Summa summarum: Du willst irgendwie ziemlich viel auf einmal und durcheinander. Obwohl es für dich, wenn man deine Beschreibung so interpretiert, nur ein einfache kleine Aufgabe zu sein scheint, holst du dir, wenn du's so realisierst, wie "angedroht", vermutlich komplexe Probleme mit ins Boot.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."