Replaces in Templates - was ist ideal?

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

  • #31
    Bei durchdachter Programmierung ist eval überhaupt kein Problem. Die Umsetzung mit eval ist vergleichsweise einfach und performancestark. Wichtig sind vor allem die Absicherung aller Inputvariabeln und die richtige Verwendung von Anführungszeichen.

    Kommentar


    • #32
      Original geschrieben von S.Oliver
      performancestark
      hust, eval ist extremst langsam.
      Ein ersetzen der Platzhalter per preg_replace ist 2 bis 3 mal so schnell
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #33
        Original geschrieben von S.Oliver
        [....]Bei durchdachter Programmierung ist[....]
        eval spürbar ne lahme Krücke was unzählige Laufzeittest untermauern.............
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #34
          Original geschrieben von Payne_of_Death

          Dann hab ich $this->block[$file_name]['blockx'] und da sind alle gleiche Blöcke aneinandergekettet........

          Beim Parsen habe ich eine Einfügemarke wo ich genau das Array bzw. diesen Block damit ersetze.....
          Das macht doch Sinn bei Blöcken, wo sich der Content nicht ändert, oder versteh ich das falsch? kannste mir vllt mal ein Beispiel zukommen lassen ?

          Nochmal ne Frage zu eval, wie arbeitet die Funktion denn, dass sie so lahm ist? Prüft sie die den gesamten String für jede exisitierende Variable einzeln? Ich hätte ja eigentlich gedacht, dass eval sogar schneller ist als bspw. 50 mal str_replace oder ähnliches?

          Kommentar


          • #35
            Original geschrieben von MehrMeerHer
            Das macht doch Sinn bei Blöcken, wo sich der Content nicht ändert, oder versteh ich das falsch?
            Nein.....
            Wenn ich extern z.B. eine Query starte und mir eine Table generieren lassen möchte der durch das Template formatiert wird....Muss ich ja den selben Block mehrmals parsen lassen durch das Template......
            Und wenn ich eben alles sofort ersetze kann ich den block nicht nochmals rausfischen weil er bereits ersetzt wurde, mit anderen Worten ich habe dann den Template Block verloren......

            Nochmal ne Frage zu eval, wie arbeitet die Funktion denn, dass sie so lahm ist? Prüft sie die den gesamten String für jede exisitierende Variable einzeln? Ich hätte ja eigentlich gedacht, dass eval sogar schneller ist als bspw. 50 mal str_replace oder ähnliches?
            Die jagt soweit ich weiss alles durch den PHP Interpreter und wird dann vermutlich lauter Prüfungen unterzogen....
            [color=blue]MfG Payne_of_Death[/color]

            [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
            [color=red]Merke:[/color]
            [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

            Murphy`s Importanst LAWS
            Jede Lösung bringt nur neue Probleme
            Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
            In jedem kleinen Problem steckt ein großes, das gern raus moechte.

            Kommentar


            • #36
              Durch richtiges Setzen von Anführungszeichen kann man eine Menge Speed rausholen, weil der PHP Interpreter dann wirklich nur die Variabeln ersetzt. Ein einfaches eval("hier kommt der ganze mist mit $variabeln") dauert natürlich sehr lange.

              Kommentar


              • #37
                @oliver.

                du kannst ja mal nen beispiel script machen. dann lass ich meine lite(!)-Klasse man dagegen antreten...

                Kommentar


                • #38
                  Original geschrieben von TobiaZ
                  @oliver.

                  du kannst ja mal nen beispiel script machen. dann lass ich meine lite(!)-Klasse man dagegen antreten...
                  OffTopic:

                  Darf man Wetten abschließen

                  [color=blue]MfG Payne_of_Death[/color]

                  [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                  [color=red]Merke:[/color]
                  [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                  Murphy`s Importanst LAWS
                  Jede Lösung bringt nur neue Probleme
                  Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                  In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                  Kommentar


                  • #39
                    aber nur wenn ihr alle auf ihn wettet, und ich die quote abkassiere!

                    Kommentar


                    • #40
                      " und ' nimtt sich fast gar nix, da kommts auf ganz andere dinge an

                      *das einfach mal so in den raum werf*


                      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                      Kommentar


                      • #41
                        Original geschrieben von TobiaZ
                        @oliver.

                        du kannst ja mal nen beispiel script machen. dann lass ich meine lite(!)-Klasse man dagegen antreten...
                        Du PHP Proll

                        Hat denn jemand mal ein paar gute Beispielschnipsel für mich, damit ich mir ein richtiges Bild machen kann? Ich hab hier auf jeden Fall nicht den Durchblick, und es sieht so aus, als müsste ich meinen Code verbessern
                        Aber ich versteh nicht so richtig, wie eure guten Lösungen aussehen. Der Download Link zu der Klasse bei den Schnipseln funzt nicht, hab davon mehrere getestet...aber es scheint, als hätte Ihr was Besonderes. Irgendwas suchen und testen möchte ich auch nicht, meist sind public Schnipsel Müll.

                        Kommentar


                        • #42
                          unter http://tbt.dyndns.org/dev_bench hatte ich mal angefangen einen Vergleich mehrerer Template Systeme zu schreiben. Da sind auch einige hier aus den Codeschnipseln dabei
                          Zuletzt geändert von TBT; 05.01.2005, 20:51.
                          TBT

                          Die zwei wichtigsten Regeln für eine berufliche Karriere:
                          1. Verrate niemals alles was du weißt!


                          PHP 2 AllPatrizier II Browsergame

                          Kommentar


                          • #43
                            Ich bin gerade dabei etwas neues für mein neues Portalsystem zu entwickeln (naja was heißt neu das gabs bestimmt schon mal vorher).
                            Damit das ganze zu 100% Multilanguage kompatibel wird und auch die Templates 100% austauschbar sein sollen (auch mit mehreren frei wählbaren Skin Packs). Habe ich mir folgendes überlegt:

                            1.)
                            Jedes Skin bassiert auf einem Basis Wrapper also zB.
                            PHP-Code:
                            <html>
                            <%
                            Header%>
                            <%
                            Menu%>
                            <
                            div>
                              <%
                            Content%>
                            </
                            div>
                            <%
                            Footer%>
                            </
                            html>

                            // Ich gehe zum Veranschaulichen jetzt mal nur auf das Menü ein 
                            Hier kann man das Grundgerüst festlegen. Hier können denke ich auch Anfänger leicht änderungen vornehmen.

                            2.)
                            Nachdem das Grundgerüst steht werden nun die Makros geladen.
                            ein Makro könnte zb so aussehen:

                            PHP-Code:
                            <a href="<#HOME PATH #>act=onlinegames">{#go_onlinegames#}</a>


                            // Auf die Platzhalter komme ich noch zu sprechen
                            // Die Makro Platzhalter sehen so aus:

                            <&LINK ONLINEGAMES&>

                            // wir habe also:

                            <html>
                            <
                            ol>
                              <
                            li><a href="<#HOME PATH #>act=contact>{#go_contact#}</a></li>
                              <li><a href="
                            <#HOME PATH #>act=onlinegames">{#go_onlinegames#}</a><li>
                            </ol>
                            </
                            html
                            Die Makros braucht eigentlich niemand zu ändern da sie nur Dinge wie image, a Tags etc enthalten, natürlich kann für jedes Skin Pack ein eigenes Makro Set festlegen falls man tatsächlich andere als die Standard Makros haben möchte.

                            3.) Nun kommt es zum Replacen der Language Variabeln
                            PHP-Code:

                            // Die Language Datei vereinfacht:

                            $lang = array(
                            'go_contact' => "Kontakt",
                            'go_onlinegames' => "Onlinegames"
                            )

                            // Die Replacements der Language Variablen sehen so aus:

                            {#Variable#}

                            // in unserem Beispiel haben wir nun:

                            <html>
                            <
                            ol>
                              <
                            li><a href="<#HOME PATH #>act=contact>Kontakt</a></li>
                              <li><a href="
                            <#HOME PATH #>act=onlinegames">Onlinegames</a><li>
                            </ol>
                            </
                            html
                            Die Language Datei zu verändern dürfte sehr einfach sein, solange man Englisch und eine andere Sprache kann. Natürlich wird je nach Seite eine andere Sprachdatei zusätlich zu der globalen geladen.

                            4.) Systemvariablen ersetzen:
                            PHP-Code:
                            // Die Systemvariablen entstehen im Laufe des Skriptes es gibt nicht sehr viele von ihnen zB.: 

                            HOME PATH = [url]http://www.url.de/index.php?;[/url]

                            in unserem Beispiel haben wir nun:

                            <
                            html>
                            <
                            ol>
                              <
                            li><a href="http://www.url.de/index.php?act=contact>Kontakt</a></li>
                              <li><a href="
                            http://www.url.de/index.php?act=onlinegames">Onlinegames</a><li>
                            </ol>
                            </
                            html
                            Naja jetzt fällt mir natürlich viel zu spät ein, dass das Beispiel vielleicht doch nicht so gut ist, denn normal gibt es ja noch Inhalte wie Posts von Usern etc, deshalb gibt es noch die letzte Instanz:

                            5.) Replacen des Main Content:
                            PHP-Code:
                            // Der BBCode wird schon beim Eintragen in die DB geparst, daher brauchen 
                            // wir danach nichts mehr zu replacen die normalen Variablen sehen so aus

                            {Content
                            Und schon ist die Seite fertig ich überlege mir gerade noch wie ich das ganze irgendwie optimieren könnte (vielleicht mit einem cache System?). Der erste Optimierungsschritt, dass der normale Content erst am Ende Replact wird um den bearbeitungsstring möglichst klein zu halten habe ich schon getan. Ich hoffe ihr habt vielleicht ein paar Anregungen, wie oder was ich da cachen/optimieren könnte.
                            daniel-portal.com/games Free Games and more

                            Kommentar

                            Lädt...
                            X