Ankündigung

Einklappen
Keine Ankündigung bisher.

Kontrollstrukturen in Template engine

Einklappen

Neue Werbung 2019

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

  • #46
    ... und sorgt besonders beim Debuging für zusätzlichen Spaß!
    [FONT="Book Antiqua"][I]"Nobody is as smart as everybody" - Kevin Kelly[/I]
    — The best things in life aren't things[/FONT]

    Kommentar


    • #47
      Zitat von dr.e. Beitrag anzeigen
      Allein die Notwendigkeit eine Manipulation des Gültigkeitsbereiches vornehmen zu müssen riecht nach workaroud...
      Musst ja nicht, kannst ja auch das Object direkt ansprechen im Template... nenn mir eine Alternative um PHP Code direkt auszuführen ohne den Output direkt auszugeben etwa eval? Das halte ich für unsauber.
      Es war nur als Beispiel gedacht wie man schnell eine Template Engine bauen kann die schnell ist und keine weitere zusätzliche Syntax erfordert.
      Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

      Kommentar


      • #48
        Zitat von phpdummi Beitrag anzeigen
        ... und sorgt besonders beim Debuging für zusätzlichen Spaß!
        Also ich nutze Eclipse mit PDT und Zend Debugger ... bisher hatte ich damit keinen "zusätzlichen" Spaß.
        Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

        Kommentar


        • #49
          In meiner eigenen kleinen Welt, in der es wie oben kurz angerissen Sandboxes für PHP (weitergehend als mit der pecl Erweiterung) gibt, könnte man STDOUT für eine Umgebung neu definieren. *platz* Und jetzt wieder die Wirklichkeit...

          Kommentar


          • #50
            Ich find diese Diskussion eigentlich sehr interesant zumal sich hier zeigt wo die Prioritäten sich unterscheiden und vielleicht lassen sich auf diesen Weg neue Möglichkeiten finden eine schicke kleine Template Engine umzusetzen.
            Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

            Kommentar


            • #51
              noch eine...

              Kommentar


              • #52
                @HStev:
                nenn mir eine Alternative um PHP Code direkt auszuführen ohne den Output direkt auszugeben etwa eval?
                Ich verstehe die Rhetorik in dieser Frage, es geht einfach nicht anders. Man kann jetzt diskutieren, ob es nun wirklich unsauber ist oder nicht, ich persönlich empfinde es einfach aus den genannten Gründen als intransparent.

                Es war nur als Beispiel gedacht wie man schnell eine Template Engine bauen kann die schnell ist und keine weitere zusätzliche Syntax erfordert.
                Ich werfe dir das ja auch nicht vor. Ich versuche nur an Hand meiner Erfahrungen an der Diskussion teil zu nehmen. Im Gegenteil, ich finde es sehr schön, dass dieses Beispiel gekommen ist, sonst hätte ich es früher oder später als Negativ-Beispiel gebracht.

                vielleicht lassen sich auf diesen Weg neue Möglichkeiten finden eine schicke kleine Template Engine umzusetzen.
                Mit einer PHP-Template-Engine kann ich dir nicht dienen, mit einer XML-/XSL-Engine schon. Schau dir mal den Beitrag unter http://www.php.de/php-einsteiger/460...-klasse-2.html an, dort habe ich einen möglichen Ansatz geschildet. Das ZIP-Package mit dem Beispiel-Code gibts unter http://adventure-php-framework.org/p...parser_dom.zip. Eine Implementierung dieses DOM-Parser-Ansatzes ist im core des APF enthalten. Vielleicht ist das ja ein interessanter Denkanstoss für dich...
                Viele Grüße,
                Dr.E.

                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                1. Think about software design [B]before[/B] you start to write code!
                2. Discuss and review it together with [B]experts[/B]!
                3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                4. Write [I][B]clean and reusable[/B][/I] software only!
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                Kommentar


                • #53
                  Zitat von David Beitrag anzeigen
                  noch eine...
                  Jetzt muss ich schon lachen, aber ich stimm dir aber voll und ganz zu, noch ein Smarty ist einfach überflüssig!
                  Viele Grüße,
                  Dr.E.

                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  1. Think about software design [B]before[/B] you start to write code!
                  2. Discuss and review it together with [B]experts[/B]!
                  3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                  4. Write [I][B]clean and reusable[/B][/I] software only!
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                  Kommentar


                  • #54
                    Zitat von dr.e. Beitrag anzeigen
                    Mit einer PHP-Template-Engine kann ich dir nicht dienen, mit einer XML-/XSL-Engine schon.
                    Ich kanns mir in etwa denken ich hab ja schon mit der HTML Verarbeitung mittels DOM beschäftig im Prinzip gar nicht mal so übel allerdings hab ich es nur dafür gebraucht um einen Vorläufer von der Template-Engine zu schreiben ... Ich nutze es nur um im Head Stylesheets und Metatags hinzuzufügen und um Platzhaltertags zu benutzen praktisch als ziemlicher grober HTML Konstrukt ...dafür sehe ich das durchaus als praktisch an aber sobald darum geht eigene Iteratoren oder sonstige Konstrollstrukturen sehe ich das Performancetechnich als kritisch ... bei kleinen Projekten dürfte man die Auswirkungen sicherlich nicht merken aber bei größeren glaube ich schon das es sich dann bermerkbar macht. Jede Sprache die innerhalb einer anderen Sprache ausgeführt wird birgt ein gewisses Performance Risiko.
                    Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                    Kommentar


                    • #55
                      Um mal auf die eigenen Kontrollstrukturen zurück zu kommen:
                      habt ihr euch eigentlich mal überlegt, wie es gemacht wird, diese Kontrollstrukturen wieder in die PHP-Versionen zurück zu wandeln?
                      Die werden ja nicht einfach mal fix wieder ersetzt.
                      Naja ersetzt werden sie schon, jedoch ist das gar nicht so einfach.
                      Geregelt wird sowas von regular expressions.
                      Wenn man einen Text nun ersetzen will, erkennt man ihn ja anhand der Delimiter.
                      Wenn die Delimiter jedoch länger als 1 Zeichen lang sind, artet der zu erstellende pattern jedoch zu echtem gehirnjogging aus.
                      Zumindest muss man hier wissen was man macht.
                      Daher rate ich gänzlich von solch einem system ab.
                      Auch weil es einfach ineffizienter arbeitet.

                      LG
                      devildeath
                      Das http://www.php.net/manual/en/index.php(PHP-Manual) sollte für PHP-Kranke die Gutenacht-Geschichte sein

                      Kommentar


                      • #56
                        Sollte aber dieses Problem (das Finden/Verstehen von Kontrollstrukturen) nicht durch APC & Co. vollständig gelöst sein?

                        @dr.e.: Ich möchte deine Benchmarks nicht anzweifeln, aber ich kann dennoch nicht verstehen, wie Transformierungen über XSLT schneller sein können, als gecachte PHP-Scripts.
                        Ich hatte vor einigen Jahren recht viel mit Java/XSLT zu tun. Damals fand ich XSLT garnicht so atemberaubend schnell. Oay, die XML-Dokumente waren teils einige MB groß . -- Oder ist libxml/libxslt so feinoptimiert?

                        Für mich wäre eine XML-basierte Template-Lösung auch sehr interessant/elegant, allerdings hielt/halte ich das DomDocument-Objekt (vorallem wenn viele davon nötig sind [Subtemplates]) für zu teuer.

                        PS.: Willkommen devildeath!

                        Kommentar


                        • #57
                          Zitat von Quadaptor Beitrag anzeigen
                          @dr.e.: Ich möchte deine Benchmarks nicht anzweifeln, aber ich kann dennoch nicht verstehen, wie Transformierungen über XSLT schneller sein können, als gecachte PHP-Scripts.
                          Ich hatte vor einigen Jahren recht viel mit Java/XSLT zu tun. Damals fand ich XSLT garnicht so atemberaubend schnell. Okay, die XML-Dokumente waren teils einige MB groß . -- Oder ist libxml/libxslt so feinoptimiert?
                          libxml/libxslt sind schon recht gut optimiert, aber ich persönlich betreibe an dieser Stelle nicht den Aufwand mit XSLT zu arbeiten - da musst du mich missverstanden haben. Grund ist, dass ich Konzepte wie MVC mit selbst implementierbaren DocumentControllern mit diesem Mittel nicht umsetzen könnte. Im APF setze ich deshalb auf einen eigenen DOM-Parser, der aus den APF-Objekten (die von der Klasse coreObject erben) aufgebaut wird. Der Parser an sich ist so generisch aufgebaut, dass er mit beliebigen user-defined TagLibs gefüttert werden kann. Weiterhin bietet dir die Implementierung des PageController einen Rahmen für MVC und three-tier-architecture. Das, verglichen mit Lösungen, bei denen Templates mit PHP-Mechanismen verarbeitet werden (z.B. Zend Framework), ist deutlich schneller.
                          Was Byte-Code-Caching angeht, so habe ich davon bei den Tests Abstand genommen, da so die Stärken bzw. Schwächen der eigentlichen Implementierung besser hervortreten. Natürlich habe ich neben den Tests Versuche mit aktiviertem mmcache, apc und eaccellerator unternommen. Es zeigte sich jedoch, dass die PHP-Template-Lösungen bessere Ergebnisse als ohne Caching erziehlten, das Endergebniss wurde jedoch dadurch nicht beeinflusst.

                          Zitat von Quadaptor Beitrag anzeigen
                          Für mich wäre eine XML-basierte Template-Lösung auch sehr interessant/elegant, allerdings hielt/halte ich das DomDocument-Objekt (vorallem wenn viele davon nötig sind [Subtemplates]) für zu teuer.
                          Dann empfehle ich dir, mal einen Blick auf das APF zu werfen, du könntest begeistert sein.
                          Viele Grüße,
                          Dr.E.

                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          1. Think about software design [B]before[/B] you start to write code!
                          2. Discuss and review it together with [B]experts[/B]!
                          3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                          4. Write [I][B]clean and reusable[/B][/I] software only!
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                          Kommentar


                          • #58
                            Danke für den tollen Empfang hier

                            Nunja die können schon abgenommen werden, nur wenn man einfach mal aus spass und wegen des Lerneffekts ein Templatesystem entwerfen will, sollte man doch auch das finden und ersetzen von Kontrollstrukturen mal versuchen.
                            Ich weiß das regular expressions von vielen vollkommen gemieden werden, weil sie einfach eine Nummer zu extrem aussehen.
                            Doch genau daran sollte man sich mal versuchen.
                            Die meisten wissen ja gar nicht, was man da alles entdecken kann.
                            Und ich finde diesen Teil der Übung eigentlich am schwersten, also warum den schwersten meiden?
                            Übung macht den Meister

                            Z.B.: Nur mal vorstellen, wenn man einen Text Markieren will, der in " " geschrieben ist und aber auch mit Backslash maskierte Anführungszeichen hat:

                            '/[^\\\"]*(\\\.[^\\\"]*)*/'


                            Ich will mir das gar nicht vorstellen, wie das bei größeren Delimitern aussehen soll ^^
                            Und das dann noch in der Performance optimieren...

                            Naja egal. Ich finde man sollte sich das mal antun, weil das auch eine wirklich eigene Form von Kunst darstellt.

                            LG
                            devildeath
                            Das http://www.php.net/manual/en/index.php(PHP-Manual) sollte für PHP-Kranke die Gutenacht-Geschichte sein

                            Kommentar


                            • #59
                              Hallo devildeath,
                              [..] nur wenn man einfach mal aus spass und wegen des Lerneffekts ein Templatesystem entwerfen will [..]
                              Ich hab bisher noch niemanden wirklich verstanden, der aus der von dir genannten Motivation ein Template-System entwerfen wollte. Davon abgesehen ist auch bei den Aktionen nie etwas sinnvolles rausgekommen.

                              Übung macht den Meister
                              Hierbei allerdings verstehen wir uns prächtig!

                              Und das dann noch in der Performance optimieren...
                              Ich habe die erste Version der PageController-Implementierung des APF per preg_match() erstellt, bei RegExps erschreckt mich nichts mehr. Was die Performance angeht, gebe ich dir Recht, strpos() + substr() sind für den genannten Anwendungsfall deutlich performanter.
                              Viele Grüße,
                              Dr.E.

                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                              1. Think about software design [B]before[/B] you start to write code!
                              2. Discuss and review it together with [B]experts[/B]!
                              3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                              4. Write [I][B]clean and reusable[/B][/I] software only!
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                              Kommentar


                              • #60
                                Zitat von dr.e. Beitrag anzeigen
                                Ich hab bisher noch niemanden wirklich verstanden, der aus der von dir genannten Motivation ein Template-System entwerfen wollte. Davon abgesehen ist auch bei den Aktionen nie etwas sinnvolles rausgekommen.
                                gibt genügend Beispiele ... bei denen das der Fall war ... nicht nur im PHP Bereich ... ProjectX ist son Fall soweit ich darüber bescheid weiß
                                Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                                Kommentar

                                Lädt...
                                X