Gå til innhold

PHP·pub - Programming With Attitude - and beer


Anbefalte innlegg

Videoannonse
Annonse

Nytt spørsmål.

 

Jeg ser at veldig mange script i denne kategorien mikser markup og logikk i en fullstendig uoversiktlig miks.

Mange mener kanskje at det ikke er noe galt i dette, og det er egentlig ikke det jeg er ute etter å debattere, men jeg lurer på hvordan gjør DU det?

Smarty er kanskje et bra alternativ for mange, men jeg mener denne er altfor stor og klumpete for mine behov. Slik jeg har gjort det hittil, som jeg mener fungerer lett og greit er å skille ut markup i en egen fil.

Disse markup-filene får ett objekt å forholde seg til (ja, koder OOP), hvor den som lager markup-filen må forholde seg til out...()-funksjoner i objektet.

 

Har også en hoved-markup-fil, som i tillegg kan kalle getPageContentFile på objektet, og dermed får en sub-markup-fil som skal inkluderes i hovedmarkupen.

 

Dette høres kanskje knotete ut, men er fryktelig enkelt, og resulterer i at logikk og markup blir delt, noe jeg ihvertfall foretrekker.

Endret av Nazgul
Lenke til kommentar

Jeg har laget mitt eget template-system. Det er ekstremt mye enklere enn Smarty og inneholder bare det jeg trenger. Helt og holdent basert på funksjoner og eneste jeg trenger å skrive i selve koden er LoadTemplate('navn'). Jeg regner med at den er solid raskere enn Smarty, selv om jeg faktisk ikke har testa det ut.

Lenke til kommentar

Selv har jeg to veldig enkle klasser. En klasse som brukes til å hente "hoved" templaten, alstå selve layouten. Også har jeg en funksjon som tmpl_get, som kalles av template fila (all php kode inni den fila blir også executed) når den skal hente content, applikasjoner osv. En annen klasse er en som brukes for å hente template biter. Feks. at noen applikasjoner (feks. kontakskjema) har egne template filer. Denne klassen har bare to ekstra funksjoner som er assign en variabel og extract (og all php kode inni her bli også exectued).

 

Grunnen til at jeg har valgt å exectue all kode i template filene er for at det blir mye enklere å gjøre små template relaterte forandringer. Jeg har også valgt å ikke ha noe vanskelig template språk som jeg kommer til å glemme om et par uker også, alt er bare $this->tmpl_get("application","contact_form") istedet, mens jeg også har en sånn tmpl::load("navn") ting som ernie.

 

Knotete forklart...

Lenke til kommentar
Vikingboard :love:

 

Du gidder ikke å gi oss noen eksempler? Gidder ikke å ploge igjennom 380 linjer, nå... :p

7035428[/snapback]

 

PHP

<?php

//array med verdier som skal byttes ut

$html = array('verdi1' => $db->verdi1(), 'test2' => $test2);

 

//puttes i en template, og assignes en variabel

$testing $screen->return_html('template_navn'$html);

 

//og deretter kjøres det ut output, med en fin wrapper og meny og stuff

$navigation["index.php?c={$view_cat}"] = $menu_frtpage;

 

$screen->add_wrapper($menu_frtpage$navigation);

 

$screen->print_page();

 

Templaten ser da slik ut (i databasen):

<h1>{$data['verdi1']}</h1>
<p>{$data['test2']}</p>

 

return_html() brukes mest i løkker, da den gir en returverdi en kan konkatenere, mens add_html() gjerne brukes der en vil putte verdien rett inn i en temp-variabel i screen-klassen. :)

Endret av jorgis
Lenke til kommentar

Fikk hakeslipp her nå. PHP-manualen er til tider mangelfull, og det fikk jeg stadfestet nå.

Output using fwrite() is normally buffered at 8K. This means that if there are two processes wanting to write to the same output stream (a file), each is paused after 8K of data to allow the other to write. stream_set_write_buffer() sets the buffering for write operations on the given filepointer stream to buffer bytes. If buffer is 0 then write operations are unbuffered. This ensures that all writes with fwrite() are completed before other processes are allowed to write to that output stream.
Dette står det selvsagt ingenting om i fwrite(), og har dermed vært et totalt ukjent faktum for min del. Vel, vel, på tide å skrive om et par ting her :hrm:

 

Tillegg: Kom til å tenke på noe her. Det stor jo processes. Vil ikke det bety at det går på prosesser internt i scriptet tro? :hmm:

Endret av Ernie
Lenke til kommentar
Ernie: We want your template-system :)

7041827[/snapback]

:no: Det er nok 72linjer jeg ikke gir ut med det første. Etter planen skal jeg bruke det i en komersiell app., og da er det en fordel at det ikke ligger å flyter på nettet sånn helt uten videre samtidig er den knyttet veldig opp mot de app. de er brukt i. Mulig jeg legger det ut seinere som en egen greie, men det skjer ikke nå iallfall.

 

Det finnes faktisk endel template-systemer ute. Mange av de er riktignok gamle, men de gir nå iallfall litt ideer. Her har man 25stk som ikke er så ille.

Endret av Ernie
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...