Ankündigung

Einklappen
Keine Ankündigung bisher.

Smarty 3

Einklappen

Neue Werbung 2019

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

  • Smarty 3

    Hallo,

    kann mir jemand von euch erklären, warum er Smarty oder eine andere Templateengine verwendet? Ich meine jetzt nicht Views und die Vorteile, sondern tatsächlich eine Engine mit eigener Syntax.

    Ich hab gestern im PHP Magazin den Artikel über Smarty 3 und die neuen Funktionen und die neue Syntax gelesen und frag mich jetzt ernsthaft was dieser Blödsinn soll. Die neue foreach-Syntax sieht aus wie bei PHP, eigentlich die gesamte Syntax wurde PHP'fiziert und man kann - fantastisch - nun auch einfach Arrays im Template definieren. Kann ich doch mit PHP auch alles?

    Der wirklich einzigste Vorteil von soetwas wie Smarty ist doch, dass man die Templates einer Person überlassen kann, der man nicht vertraut und die somit keinen Zugriff auf PHP-Funktionen haben soll oder? Gibts es noch irgendeinen Vorteil ... mir ist völlig unklar was diese zusätzliche Schicht an Nutzen bringen soll? Würde mich über eine Antwort von aktiven Nutzern von Templateengines freuen, werde auch keine Missionierung starten, mich interessiert einfach nur die Motivation.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

  • #2
    ich habe einst auch Smarty genutzt und zwar schlicht aus dem Grund, dass sich damit mit äußerst geringem Aufwand eine Trennung zwischen Applikations-Logik und Ausgabe-Logik erreichen ließ. Mit ausgeschalteten {PHP}-Tags kam der zweite Grund der Sicherheit auch noch hinzu, den du ja schon selbst nanntest. Dazu ist die Syntax leicht zu erlernen, auch für Menschen, die sonst mit Programmierung nicht so viel am Hut haben und sich nicht in eine recht komplexe Programmiersprache wie PHP einarbeiten wollen. Insbesondere wenn OOP ins Spiel kommt, sind Template-Module bzw. Views recht komplex für Designer, die sich noch nie mit Programmierung und Anwendungsdesign auseinandergesetzt haben.
    Allerdings habe ich irgendwann aufgehört, Smarty zu nutzen, weil es einfach zu viele Features bekam, die niemand braucht und der Vorteil der heruntergebrochenen Komplexität verloren ging. Außerdem verleiteten sie dazu, vieles, was eigentlich Anwendungs-Logik ist, schnell ins Template zu pfuschen. Ich habe dann mal darüber nachgedacht, XSLT als Template-Sprache zu verwenden, aber das ist noch komplexer. Mittlerweile nutze ich lieber MVC bzw. MVC-ähnliche Ansätze oder simple Template-Sprachen wie sie z.B. in Silverstripe implementiert sind.
    Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

    Kommentar


    • #3
      Ich will auch nicht missionieren, aber mal wieder Twig ins Feld führen. Die machen imho vieles richtig und haben auch eine Begründung:
      Twig - The flexible, fast, and secure template language for PHP
      Why yet another template language?

      Mit MVC sehe ich den Sinn auch nicht mehr, weshalb ich noch kein wirkliches Projekt hatte, das ich mit Twig ansetzen konnte. Ich finde aber die Erweiterbarkeit, die Sandbox und die foreach/else-Konstrukte ganz sexy. Templatevererbung und Subtemplates haben IMHO auch ihre Berechtigung. Und I18n endlich mal ins Template zu verlagern, ist auch cool. Ansonsten benuzte ich immer noch PHP, aber manchmal stören mich die sperrigen Tagklammern schon, das muss ich zugeben.

      XSLT käme für mich nicht in Frage, weil es immer xml-valide Templates voraussetzt. In einem Versuch, bei dem ich eine verschachtelte xml-Struktur in eine lineare umsetzen wollte, konnte ich mich nicht für dieses Prinzip begeistern, denn das ging nur über einen blöden PHP-Hack. Zudem wirkt XSLT extrem sperrig, wenns ans eingemachte geht.
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #4
        Zitat von nikosch Beitrag anzeigen
        Ich will auch nicht missionieren, aber mal wieder Twig ins Feld führen.
        ++ für Twig.

        Der größte Nutzen einer Template-Engine liegt m. E. abgesehen von den viel besser lesbaren Templates darin, eine saubere Trennung zwischen Programmierer und Gestalter/HTML-Sklave () zu vollziehen, wenn mehrere Leute an einem Projekt arbeiten.

        Zu erwähnen wäre übrigens noch die Möglichkeit, in Twig Makros zu schreiben, die z. B. häufige (HTML-oder-was-auch-immer-)Konstruktionsaufgaben abstrahieren können. Finde ich ganz schön, wenn die low-level Präsentationslogik im Template-Kontext verwirklicht wird - auch hier wieder vor allem mit Bezug auf Entwicklung im Team.

        Kommentar


        • #5
          Ihr nervt doch...

          Ich hab mich jetzt endlich mal wieder auf ein ruhiges WE gefreut mit ner Runde gemütlichen Programmieren und nu muss ich mir TWIG anschauen, weils sichs einfach geil anhört und mich Smarty mittlerweile bisl langweilt...
          "My software never has bugs, it just develops random features."
          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

          Kommentar


          • #6
            Ach, du tust uns aber leid. Das haben wir so nicht gewollt.
            Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

            Kommentar


            • #7
              habt ihr erfahrung was die performance angeht? Gerade im Unterschied zwischen Smarty und Twig?

              Kommentar


              • #8
                Hmmm ja das würde mich auch interessieren.
                "My software never has bugs, it just develops random features."
                "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                Kommentar


                • #9
                  Benchmarks findet man z.b. hier:

                  Templating engines in PHP - Follow-Up - Fabien Potencier

                  inklusive download um sie selbst nachzustellen.
                  [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
                  | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

                  Kommentar


                  • #10
                    wenn das stimmt, spricht ja einiges für twig, mal schauen wann ich zeit und lust habe es nachzubilden

                    Kommentar


                    • #11
                      Ich bin ja seit kurzem (wieder) ein Fan von HAML. Sehr gewöhnungsbedürftig, mit einer etwas anderen Zielsetzung, aber ich find's top. Kommt ursprünglich aus der Ruby-Ecke, aber es gibt wohl inzwischen auch phpHAML.
                      Beispielcode:
                      Code:
                      !!! 1.1
                      %html
                        %head
                          %title= $title
                        %body
                          #header
                            %h1 Example page
                            - if ($loggedIn)
                              .welcomeblurb Du bist eingeloggt
                          #content
                            Hier die Inhalte
                            ul.somelist
                              - foreach ($list as $item)
                                li= $item
                          #footer
                            Footer
                      Spart jede Menge Tipparbeit und sorgt mehr oder weniger automatisch für aufgeräumten Code.
                      [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                      Kommentar


                      • #12
                        LOL, watt datt denn?! IMHO gibts auch einen ähnlichen XML-Dialekt, ich find allerdings die Wikiseite dazu nicht mehr.

                        Ist mir allerdings etwas zu weltfremd. Wenn ich mir dan angucke, wie bspw. Attribute umgesetzt sind (braucht man ja doch mal ab und an): http://haml-lang.com/docs/yardoc/fil...tml#attributes
                        GAGA, GOGO, TRALAFITTI!
                        !!
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #13
                          Vielleicht sollten wir alle unsere Templates in Brainfuck hacken.
                          Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                          Kommentar


                          • #14
                            Naja die Attributsynthax kommt halt von Ruby und ist ein einfacher Hash. Du kannst statt:
                            Code:
                            %div{:id => "hallo"}
                            auch
                            Code:
                            %div(id=hallo)
                            schreiben. Oder in dem Fall auch einfach nur
                            Code:
                            #hallo
                            Attribute brauchst du wirklich nicht so oft wie man zuerst meint. Für id und class kannst du einfach CSS ähnlich #hallo.blub (bedeutet <div id="hallo" class="blub">) schreiben. Für
                            Code:
                            <script type="javascript">
                            alert("hi");
                            </script>
                            einfach nur
                            Code:
                            :javascript
                              alert("hi")
                            Das sind so die Attribute die ich am meisten brauche - und die gehen, wie du siehst, einfach von der Hand.

                            Ich gebe zu, es ist gewöhnungsbedürtig. Aber sicher kein Brainfuck - sondern einfach nur alles unnötige weggelassen.
                            ruby/erb:
                            Code:
                            <html>
                            	<head>
                            		<title>Hallo</title>
                            	</head>
                            	<body>
                            		<div id="header">Header</div>
                            		<div id="content">
                            			<%= "Hallo #{user.name}" %>
                            		</div>
                            		<div id="footer">Footer</div>
                            	</body>
                            </html>
                            Schritt 1: schließende Tags wegmachen, ein Tag der aufgeht wird immer auch geschlossen, wozu also nochmal alles tippen?

                            Code:
                            <html>
                            	<head>
                            		<title>Hallo
                            	<body>
                            		<div id="header">Header
                            		<div id="content">
                            			<%= "Hallo #{user.name}" %>
                            		<div id="footer">
                            			Footer
                            Nächster Schritt: Wozu <>, ich muss ja nur erkennen ob es sich um einen Tag oder Text handelt ... also reicht ein Zeichen zur Erkennung: %:
                            Code:
                            %html
                            	%head
                            		%title Hallo
                            	%body
                            		%div id="header"Header
                            		%div id="content"
                            			<%= "Hallo #{user.name}" %>
                            		%div id="footer"
                            			Footer
                            Da der Fall <div id="xyz" so oft vorkommt, gibt's dafür ein Shortcut: #xyz. Und statt <%= kann man einfach = schreiben. Fertig:
                            Code:
                            %html
                            	%head
                            		%title Hallo
                            	%body
                            		#header Header
                            		#content = "Hallo #{user.name}"
                            		#footer Footer
                            Vielleicht ist das bei mir auch nur eine momentane Begeisterung. Aber ich find's schon ziemlich cool (hab's aber auch noch nie zusammen mit PHP verwendet). (OT: Und wenn ich euch schon nicht dafür begeistern kann, dann vielleicht wenigstens für sass: Sass - Syntactically Awesome Stylesheets Etwas weniger brainfuckig und mehr awesome )
                            [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                            Kommentar


                            • #15
                              ist doch so ähnlich wie zen-coding, oder?

                              Kommentar

                              Lädt...
                              X