2012-04-05 5 views
2

Es gibt ein bestimmtes Framework, das ich benutze, in dem die Hauptentwickler erwägen, sich drastisch von nativen PHP basierten Templating zu XSLT Templating zu ändern.Hat jemand von PHP Templating zu XSLT Templating ging und es nicht bereut?

Ich bin besorgt, dass dies nicht machbar sein wird, weil wir auf unseren Sites normalerweise sehr komplexe Templating-Logik haben.

Für etwas so einfaches wie folgt aus:

if ($something) { ?> 
     <p><?php if ($another) { ?>Lorem Ipsum<?php } else { ?>Dolor amet<?php } ?>.</p> 
    <?php } else { ?> 
     <p><?php if ($another) { ?>Lorem Ipsum<?php } else { ?>Dolor amet<?php } ?>.</p> 
    <?php } ?> 

Die äquivalente XSLT wäre:

<xsl:choose> 
     <xsl:when test="blah"> 
      <xsl:choose> 
       <xsl:when test="another"> 
        <p>Lorem Ipsum.</p> 
       </xsl:when> 
       <xsl:otherwise> 
        <p>Dolor amet.</p> 
       </xsl:otherwise> 
     </xsl:when> 
     <xsl:otherwise> 
       <xsl:when test="another"> 
        <p>Lorem Ipsum.</p> 
       </xsl:when> 
       <xsl:otherwise> 
        <p>Dolor amet.</p> 
       </xsl:otherwise> 
     </xsl:otherwise> 
    </xsl:choose> 

Mit solchen einfachen Code-Schnipsel, es macht mir Angst, wenn ich von fortgeschrittenen Szenarien denken.

Ich frage mich, ob jemand eine ähnliche Templating-Konvertierung durchlaufen hat und wenn ja, wie sind Sie damit umgegangen? Bist du zurückgegangen?

+0

Nicht zu verstehen XSLT ist kein Grund zur Sorge, dass ein Team sich dafür entschieden hat. Ein sinnvoller Handlungspunkt ist es, den Horizont zu erweitern. Ein guter Weg, nicht mehr Angst zu haben, ist, mit dem Lernen zu beginnen - durch Lesen und Üben. Es gibt gute Lernressourcen, einschließlich vieler Fragen und Antworten in SOs "xslt" -Tag. –

+0

Das ist kein Problem für mich, ich mache mir nur Sorgen, dass dies für den größten Teil meines Teams zu einer Verlangsamung der Produktion führen wird (Interface-Entwicklung, die ab sofort mit XSLT und Template-Logik statt Backend-Entwickler arbeiten wird), und Wir laufen mit engen Terminen, wie es schon ist. –

+2

Nach meiner Erfahrung ist die Verarbeitung von XML mit XSLT um Größenordnungen schneller als mit herkömmlichen imperativen Sprachen. Die Qualität ist viel höher mit Größenordnungen weniger Bugs. Sie könnten sogar die gleiche Arbeit mit weniger Entwicklern machen. –

Antwort

1

Nach meiner Erfahrung, gehe ich immer wieder zurück zu einfachen .phtml Dateien - nicht, dass dies das Richtige oder das Ideale ist, aber was löste die Probleme zu der Zeit.

XSLT hat nie die richtigen Dinge für mich gefunden, auch nicht für einfachere Logikvorlagen.

Wenn es ein Template-System gibt, das mich glücklich gemacht hat, war das Twig.

6

In XSLT 1.0 Ihre vorgeschlagenen Code kann vereinfacht werden:

<p> 
    <xsl:choose> 
     <xsl:when test="blah"> 
       <xsl:when test="another">Lorem Ipsum.</xsl:when> 
       <xsl:otherwise>Dolor amet.</xsl:otherwise> 
     </xsl:when> 
     <xsl:otherwise> 
       <xsl:when test="another">Lorem Ipsum.</xsl:when> 
       <xsl:otherwise>Dolor amet.</xsl:otherwise> 
     </xsl:otherwise> 
    </xsl:choose> 
</p> 

In XSLT 2.0 es weiter kann vereinfacht:

<p> 
    <xsl:value-of select="if (test=blah) 
         then if (test=another) then 'Lorem ipsum' else 'Dolor amet' 
         then if (test=another) then 'Lorem ipsum' else 'Dolor amet'"/> 
</p> 

Was mich als viel schöner als Ihr PHP Original schlägt .

Für die allgemeinere Frage hat XSLT eine steile Lernkurve. Diejenigen, die dabei bleiben und die Konzepte beherrschen, sind im Allgemeinen sehr glücklich mit der Sprache. Aber ziemlich viele Leute bekommen kalte Füße und geben auf, bevor sie zu diesem Punkt kommen, weil es sich so sehr von allem unterscheidet, dem sie zuvor begegnet sind.