03. april 2003 - 04:35Der er
9 kommentarer og 1 løsning
PHP DOM? Hvad mener du?
Hej, jeg har nu arbejdet med templates et stykke tid, har kigget på patTemplate og en smule på fastTemplate, og istedet valgt at udvikle mit helt eget system (sådan er jeg, vil hellere lave det selv end bruge noget andre har lavet :)
Men jeg er kommet til at tænke på om ikke man kunne gøre systemet endnu bedre, og så var det jeg kom i tanke om W3C's DOM. Jeg kom til at tænke på om man kunne kombinere ideen bag DOM og ideen bag templates.
Istedet for at sætte flere små stykker HTML sammen, kunne man tage et stort stykke og ændre det dynamisk inden det sendes til brugeren, vel at mærke uden at tilføje "underlige" koder som {TITLE} i HTML koden.
Og så kom jeg til at tænke på at kombinere det med SQL syntaks, f.eks. noget i denne stil
SET ATTRIBUTE class = 'minCSSklasse' WHERE id = 'sometag'
Ovenstående skulle så selvfølgelig give attributten class værdien "minCSSklasse" på elementet med id="sometag"... Bare for at give et hurtigt eksempel på hvad jeg mener :)
Havde også tænkt på en mere JavaScript agtig løsning, som f.eks.
Men den har jeg opgivet, da det vel ikke er praktisk muligt at lave i PHP. Men nu er det så jeg ønsker at høre jeres mening om ideen, hvordan det måske kunne se ud, hvordan man måske kunne gribe det an og så videre. Eller er jeg bare blevet lidt for underligt, hvad mener du? :o)
Skal lige nævne at jeg ikke søger hjælp til noget som sådan, ønsker bare at høre andres gode ideer :)
Jeg kan sagtens følge din idé - og det kunne sikkert være squide-sjovt at lave.
Jeg er dog ret sikker på, PHP slet ikke er resource-stærkt nok til den slags ... det er trods alt kun et scripting sprog. I forvejen har jeg endnu ikke set et templatesystem, der har større fordele end bagdele. De fleste er gaaaabende langsomme - og FastTemplate er skoleeksemplet på, hvordan man _ikke_ skal løse opgaven. Hvordan det er kommet til at hedde noget med 'Fast' er en gåde :)
Lidt god kodeskik og overskuelig kode i kombination med remote JS- og CSS-filer er som oftest lang at foretrække fremfor templatesystemer. I hvert fald på sites med mange besøgende.
Hej Ole... Ja, en af mine første tanker var også om det ikke ville være det rene server-tortur, og det vil det sikkert, men om ikke andet kunne man få noget sjov ud af det :)
Og hvad angår kvaliteten af diverse template systemer som fastTemplate, er det netop derfor jeg har valgt at lave det selv fra grunden. De fleste af den slags ting indeholder tonsvis af kode jeg aldrig ville få brug for, koden er elendigt sat sammen (efter min mening om hvordan kode bør se ud :), og så videre. Min egen er jeg rimeligt tilfreds med, den fylder kun omkring 32 linier uden diverse kommentarer, og indeholder kun hvad der er brug for. Selvfølgelig vil det altid tage lidt extra arbejde for serveren, men synes det er rart helt at kunne adskille min HTML og PHP kode.
PS: I virkeligheden er det at sætte en side sammen, når en bruger forespørger den, kun noget man bør bruge i nødstilfælde. Det strider jo også direkte imod alle de rationaliserings erfaringer, man har gjort siden industrialiseringen begyndte i midten af 1800-tallet ... for ikke at tale om Henry Ford's revolutionering af fremstillingsprocessen.
Forestil dig, du går ned og bestiller en ny standard-bil - og så får beskeden: "Værsågod at stille op i køen ... vi skal lige grave jernmalmen op først". Det ville naturligvis aldrig ske idag. Ikke desto mindre sker det alt for ofte, når vi gerne vil se en side på WWW.
Den brugervenlige måde at gøre det på, er at give brugeren en statisk side, når det overhovedet kan lade sig gøre. Det kræver kun et HTTP-træk, hvilket belaster serveren langt mindre end at stykke siden sammen, hvergang den kaldes. Derfor kan siden godt være skrevet ud med PHP - f.eks. via et CMS - men det vil kun trække på PHP'en, når siden opdateres ... ikke når den kaldes.
Selvfølgelig er der situationer, hvor det ikke kan undgåes - men generelt undrer det mig såre, man er vendt tilbage til en flere hundrede år gammel - og på alle andre områder forkastet - måde at producere kosumvarer på. Det skyldes dog formodentlig, WWW stadig kun er en lille baby og det vil uden tvivl ændre sig i årene fremover :)
Og så skal man i øvrigt ikke være blind for det faktum at: 'For en mand med en ny hammer kommer alt til at ligne søm'. Bare fordi man _kan_ ... behøver det ikke at betyde, man _skal_.
Jeg tror, vi er rimelig enige - men jeg har nu ikke spor imod lidt PHP i toppen af dokumentet og så ren HTML med nogle få kald à la <?=$variabel?> eller <?=funktion()?>. Det synes jeg personligt er ganske overskueligt :) /mvh
Jeg er selv begyndt at kigge nærmere på template-systemer her de sidste par dage - jeg er endt op med et der hedder Smarty (smarty.php.net), som jeg egentlig troede var ganske velstruktureret og hurtigt, men måske I har andre erfaringer?
Din ide med at kombinere DOM med et PHP template-system virker ganske seriøs - måske noget som hastighedsmæssigt ville være realistisk, hvis det blev kodet i ren C/C++ eller noget i den retning?
Tipsen > Har kun kigget meget kort på smarty, der er så mange at vælge mellem at det er svært at danne sig et indtryk af deres fordele og ulemper.
Og det ville da helt klart give en bedre hastighed at lave det som et PHP modul i C/C++, men personligt er det ikke min stærke side, men kan vel altid blive det, ellers kan det måske inspirere andre med mod på den slags :)
Så er jeg så småt gået igang med projektet, i PHP, så må vi se hvordan det ender med at se ud... Forslag af enhver art er selvfølgelig stadig velkomne :) Jeg er dog alligevel blevet enig med mig selv om "JavaScript" syntaksen :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.