Wieso gibt es Template Engine? Wozu werden die benötigt? | PHP Bergfest talk

Wieso gibt es Template Engine? Wozu werden die benötigt? | PHP Bergfest talk

Vitalij Mik

3 года назад

2,624 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@sven2529
@sven2529 - 16.12.2020 21:02

Viel wichtiger sind Vue, React und ähnliche Tools

Ответить
@sven2529
@sven2529 - 16.12.2020 21:03

Man sollte heutzutage kein HTML über PHP ausgeben. Also nicht mit echo.

Ответить
@timmjrg
@timmjrg - 16.12.2020 21:52

Ich hab früher auch SQL-Abfragen knall hart ins HTML eingeflochten...

Ответить
@MMNewmedia
@MMNewmedia - 16.12.2020 23:05

Wir haben ja schon öfter über den Sinn oder Unsinn von Template Engines im Zusammenhang mit PHP an anderer Stelle gesprochen. Aus meiner Sicht haben PHP Template Engines überhaupt gar keine Daseinsberechtigung. PHP ist von Hause aus schon eine Programmiersprache, welche genau das tut, was Template Engines mit erheblichen Aufwand nachbilden. Die Nachteile liegen auf der Hand: zusätzlich zu erlernenden Syntax der Template Engine, Code Overhead und zusätzliche Last auf dem Server, um Funktionen nachzubilden, die PHP auch ohne Template Engines kann. Wieso sollte ich mir eine Template Engine ins Haus holen, die über eine eigene Syntax eine simple foreach-Schleife oder if-Bedingungen nachbildet? Das kann PHP doch schon ganz allein und darüber hinaus sogar ziemlich schnell. Bestes Beispiel: Das Laminas Framework (ehemals Zend Framework) nutzt eine View Instanz, die mit einfach PHP Templates und View Helpern arbeitet. Keine eigene Syntax. Strikte Trennung von Business Logik. Ähnlich wie es Plates auch getan hat. Einfach nur konsequent und richtig umgesetzt.

Kurz und knapp: Template Engines sind etwas für PHP Entwickler, die nicht sauber programmieren können. Eine Krücke, die niemand braucht.

Die einzige Template Engine, die in meinem Augen eine Daseinsberechtigung hat, ist XSLT. Eine native Engine, über die man XML Daten über XML Stylesheets (XSL) in HTML oder sonst irgend ein anderes Markup bringen kann. Kein Overhead und jeder Browser setzt es von Hause aus um.

Ответить
@karlkoslowski5439
@karlkoslowski5439 - 17.12.2020 00:08

Vor 10 - 15 Jahren, als Template-Engines aufkamen (Smarty ganz vorne, führt jetzt, glaube ich, eher ein Schattendasein) war immer der große Aufhänger, dass Designer damit ihre Designs implementieren können sollten. Allerdings ist mir in meiner ganzen Laufbahn kein einziger Designer untergekommen, der das hätte machen wollen, geschweige denn machen können.

Der einzige Grund für mich für Template-Engines ist, dass ihre Syntax bzw. Funktionalitäten auf Präsentation ausgelegt sind - Das passende Werkzeug für das jeweilige Problem usw.. Aber um EVA-Verletzungen zu vermeiden? Ich weiß nicht..

Ответить
@espoleon_
@espoleon_ - 17.12.2020 03:42

Frage mich ob Vitalij das Thema aufgrund der neulich geführten Unterhaltung mit mir über Template Engines, unter einem seiner Videos gewählt hat. ^^

Ich persönlich mag andere Template Engines nicht. Der Grund ist einfach: Die meisten sind zu groß (Gesamtgröße der Dateiern als auch die Dateianzahl) und gehen über das hinaus, wofür sie eigentlich mal gedacht waren -> Das strikte trennen von PHP und HTML (Logik und Ausgabe).

Seit gut ein halbes Jahr programmiere ich an meinem eigenen Projekt, wofür ich eine eigene Template Engine entwickelt habe. Diese ist eine einzige Datei als Klasse und hat nur die grundlegenden Funktionen zum trennen von PHP und HTML. Dafür braucht man keine 50+ Dateien und hier zusätzliche Funktionen und da zusätzliche Funktionen. Meine benötigt auch nur einen einzigen Befehl, nämlich render($data); und in $data kommen alle benötigten Platzhalter (Variablen, Arrays, Schleifen, Werte, ...) rein. Der Template-Dateipfad wird automatisch anhand der aufgerufenen Seite ermittelt. Selbst die Erstellung einer neuen Instanz, wie sie bei vielen Template Engines manuell initialisiert werden muss, erfolgt bei meiner Template Engine automatisch.

Für alles weitere in meinem Projekt verwende bzw. entwickel ich Klassen und Module (Module sind bei mir Inhalte ähnlich der Plugins für Wordpress). Unter Module kommen dann so Dinge wie Webserver\Projekt\mods\admin, Webserver\Projekt\mods\forum, Webserver\Projekt\mods\user, etc und unter Templates dann die tpl files -> Webserver\Projekt\templates\admin, Webserver\Projekt\templates\forum, Webserver\Projekt\templates\user, etc

Ответить
@Meinungsmacher
@Meinungsmacher - 17.12.2020 09:21

Ich hab früher Template Engines immer gehasst, ich hab nie verstanden wieso man eine extra Sprache einführt wenn PHP doch im prinzip auch eine gute Template Engine ist. Allerdings hab ich dann Angefangen mehr mit Prestashop zu machen, die verwenden noch Smarty als TE, seitdem mag ich es eigentlich. Es zwingt einen das MVC besser einzuhalten. Alles wird im Controllere "angerichtet" und anschließend dem View, also dem Smarty-Templte übregeben. Man kann auch das sehr granular machen.

Mir hift es definitiv Code und Inhalt nochmal sauberer zu trennen.

Ответить
@weblio4861
@weblio4861 - 17.12.2020 11:59

Bei den von uns entwickelten Plattformen trennen wir strickt das Backend von Frontend und entwickeln quasi "Headless" und dank modernen Frameworks wie Symfony oder Laravel ist das auch mit PHP ziemlich angenehm.

Ответить
@telly64
@telly64 - 18.12.2020 17:01

Also Smarty (ist ja der Klassiker unter den Template Engines) finde ich von der Syntax unschön und das Caching nervt.
Wird trotzdem häufig verwendet.

Ответить
@imperiumkiller8389
@imperiumkiller8389 - 30.12.2020 04:51

Verwende weder Laravel noch Symfony und verwende twig.

Ответить
@Toeb01
@Toeb01 - 07.10.2021 07:59

Mein Code ist auch noch durcheinander und ich überlege mich in das Thema Template Engine einzuarbeiten. Jetzt habe ich ein englisches Video gesehen, der rät von Engines ab und meint "render" liefert alles was man braucht und eine zusätzliche Engine hat nicht mehr nutzen oder Effizienz?? 🤔🤔

Ответить