Jump to content
php.lv forumi

PHP template engine


CryRat

Recommended Posts

huh... kāds te izmanto kādu template enginu ?

 

principā es nolēmu uzrakstīt mazu enginu priekš sevis un viss arī veiksmīgi izdevās... itkā jau pavisam vienkārš - nomaina {KAUTKAS} no .tmpl faila uz $kautkas no .php faila... un vēl {ENTRIES}<div><h3>{TITLE}</h3>{TEXT}</div>{/ENTRIES} tā lai tas starp {ENTRIES} atkārtotos tik cik vajag reizes... bet lieta tāda ka tas briesmīgi bremzē... patestējot sanaca no ~0.0035 uz ~0.07 milisekundēm ! tas mana līkā koda dēļ vai tā pieņemts ?

 

kādam ir laiks / interese paskatīties manu šīs nakts murgu ? ( paste.lv izņēma tukšās rindiņas tādēļ ir 6 - 17 rindiņa nevis 7 - 18 kā aprakstā )

 

sevis attaisnošanai teikšu ka nav man nekādas skaidrības kā tie template engini strādā... rakstīju kā mācēju...

 

varbūt ir idejas kā pareizāk uzrakstīt ? nu tā lai nav tik briesmīgi liela starpība milisekundēs... nevajag man nekādas krutas fiškas pilnīgi pietiek ar to ko tagad esu uzrakstījis... ja tikai strādātu ātrāk...

Link to comment
Share on other sites

  • Replies 31
  • Created
  • Last Reply

Top Posters In This Topic

Es ari itka domaju taisit template engini bet ta isti nevaru ierubit ka butu ertak labak un ipashi nebremzetu! Nu ja kadam nav slinkums iesakiet kadu variantu! :blink:

Link to comment
Share on other sites

Templeta engiini (varbuut) atmaksaajas tikai tad ja serverim ir mezhoniiga noslodze un tu gjeneree gatavus statiskus failus preteeji bremze noteikti buus lielaaka un jeega maza..

 

 

Proti ar ko atskjiras ja tev ir templeits kuraa teiksim ir

 

<html><head><title>{TITLE}</title> ...

 

Un vienkaarshi php fails kuraa

 

<html><head><title><? echo $title; ?></title>

 

Principaa nearko iznjemot to ka tev pirmajaa variantaa ir jaielasa veel klucis r tekstu tad tas jaapaarsee un jaarepleiso dinamiskaas vietas kas nu nu galiigi nav vajadziigs un lietderiigi..

Un otro variantu tu tikpat labi vari editeet jebkuraa WYSIWYG editoraa nebaidoties ka kaut kas tiks sabojaats..

 

Taakaa attieciibaa uz kaut kaadiem speed improvmentiem labaak ir domaat par php/http keshu..

Link to comment
Share on other sites

Templeta engiini (varbuut) atmaksaajas tikai tad ja serverim ir mezhoniiga noslodze un tu gjeneree gatavus statiskus failus preteeji bremze noteikti buus lielaaka un jeega maza..
ideja jau tam viam bija tāda lai atdalītu php no (x)html... nevis lai iegūtu kaut kādu paātrinājumu koda darbībā... ir ļoti patīkami ka var bez problēmām atri atrast un mainīt (x)htmlu neuztraucoties par php un atkal otrādi... kaut vai
printf("%s</td><td>%s</td><td>%s</td><td><a href=\"%s\">URL</a></td><td>%s</td><td>%s</td></tr>\n", $anime['title'], $anime['category'], $anime['episodes'], $anime['animenfo'], $anime['quality'], $anime['rating']);

un

{ANIME}<tr><td>{TITLE}</td><td>{CATEGORY}</td><td>{EPISODES}</td><td><a href="{URL}">URL</a></td><td>{QUALITY}</td><td>{RATING}</td></tr>{/ANIME}

pirmajā variantā paiet kāds laiks kamēr atrod to ko vajag a otrajā viss ir labi redzams un saprotams...

 

laikam būs jādara tā kā teici - faile jāģenerē statiski... nu ne visi bet daži galvenie...

Link to comment
Share on other sites

nee nu kaapeec ar printf???

 

Un kapeec ne shaadi?

<tr><td><? =$title ?></td><td><? =$category ?></td><td><? =$episodes ?></td><td><a href="<? =$url ?>"><? =$url?></a></td></tr>

(vai ar echo)

 

Un ieguusti analogu templeitu ar starpiibu ka vairs nafig nav jaaglabaa kaut kaadi .tmpl faili, nekas nav jaanolasa un papildus jaapaarsee/jaarepleiso/jaawraito..

 

Nesaprotu prieksh kam sarezgjiit sev dziivi ja rezultaataa taapat nebuus buutiska ieguvuma..

Link to comment
Share on other sites

Tad jau mierīgī var to (x)htmlu inklūdot un mainīt atsevišķi.
umm... nesapratu kā tu to domā ?

 

nee nu kaapeec ar printf???
nekāda īpaša iemesla nav... vienkārši ja daudz mainīgo jāievieto starp tekstu tād printf() man patīk labāk nekā echo vai kas cits...

 

Un kapeec ne shaadi?
<tr><td><? =$title ?></td><td><? =$category ?></td><td><? =$episodes ?></td><td><a href="<? =$url ?>"><? =$url?></a></td></tr>

tāpēc ka tas derētu tikai tad ja man būtu viena tabulas rinda... bet man viņu ir daudz... kā tu uztaisīsi tīru (x)html kodu tikai ar <? =$kautko ?> priekš vairākām rindām neizmantojot ciklu ? un ja tiek izmantots cikls tad sanāk tas pats variants kas vienmēr - (x)html ar php pa starpām...

 

ar starpiibu ka vairs nafig nav jaaglabaa kaut kaadi .tmpl faili
bet es gribu viņus glabāt ! tas ir mans mērķis atdalīt php no (x)html...

 

Nesaprotu prieksh kam sarezgjiit sev dziivi ja rezultaataa taapat nebuus buutiska ieguvuma..
kā ta nav ieguvuma ? visu laiku jau saku ka php tiek atdalīts no (x)html... tas ir tā pat kā css atdalīt no (x)html... tas tikai atvieglos dzīvi...

 

vispār es sāku nopietni apsvērt iespēju pilnīgi visu ( ar ļoti minimālielm izņēmumiem ) ģenerēt statisku... nav tak nekāda nopietna iemesla to nedarīt ? saita ātrums ievērojami palielināsies... varēšu izmantot to pašu manis uzrakstīto funkciju priekš failu ģenerēšanas no .tmpl... tiakai tas ka uz servera mētāsies teiksim katrs žurnāla ieraksts atsevišķā failā nevis viss iekš DB...

Link to comment
Share on other sites

Ghmm php ir "html embeded" valoda kapeec taa buutu jaaatdala? :)

 

Es itkaa negribu strideeties.. protams dari kaa tev patiik utt un ekspirementa noluukos ir jauki pameegjinaat visu ko :)

 

Kas attiecas uz ciklu.. Tikpat labi vari uzrakstiit

 

<? while($row = mysql_fetch_assoc($result)) { ?>

<tr><td><? echo $row[lauks]; ?></td></tr>

<? } ?>

 

PHP ir principaa atdaliits no html un tas ir analogs tavam templeitam

 

{ANIME}<tr><td>{TITLE}</td></tr>{/ANIME}

 

Manaa gadijumaa {ANIME} vienkaarshi tiek aizstaats ar while() { .. un kuru normaals editors uzskata par komentaaru ieksh html koda un neaiztiek anyway.. Liidz ar to starpiibas shaja ajautaajumaa nav.

Link to comment
Share on other sites

php ir "html embeded" valoda kapeec taa buutu jaaatdala?
vispār labs arguments :) bet jāatdala lai... aj apnika jau visu laiku vienu un to pašu rakstīt... vienkārši manuprāt tas ir nākošais loģiskais solis mana saita attīstībā...

 

Es itkaa negribu strideeties
heh... negribi strīdēties kā apniki-tu-man-dari-kā-gribi vai negribi strīdēties kā nu-var-jau-būt-ka-ir-tev-kaut-kāda-taisnība ? :)

 

<? while($row = mysql_fetch_assoc($result)) { ?>

<tr><td><? echo $row[lauks]; ?></td></tr>

<? } ?>

mysql_fetch_assoc($result) ir tas pats kas mysql_fetch_array($result, 1) ja ?

 

Manaa gadijumaa {ANIME} vienkaarshi tiek aizstaats ar while() { .. un kuru normaals editors uzskata par komentaaru ieksh html koda un neaiztiek anyway.. Liidz ar to starpiibas shaja ajautaajumaa nav.
jā bet neaizmirsīsim ka tev pirms tā cikla ir jāpieslēdzās pie DB jāizzvejo attiecīgie ieraksti utt. un kas ir ja piemēram tā kā es izdomāju ka tagad trīs jaunākos ierakstus vajag <b> ? tad tev gribot negribot iekš tā while() ir jāraksta vēl PHP un kā tu saproti to es negribu...

 

nu bet labi... es ar negribu strīdēties... tāpat es nepiekāpšos... esu spītīgs... heh...

Link to comment
Share on other sites

mysql_fetch_assoc($result) ir tas pats kas mysql_fetch_array($result, 1) ja ?

 

līdzīgi ir, bet otrais atgriež ne tikai masīvu ar "kolonnu nosaukumiem" kā indexiem, bet uztiasa arī dublējošos masīva indexus ar kolonnu skaita numuru. E.g. tev pirmā kolonna ir "id", tad pēc assoc tu lasi datus kā $result['id'], bet otrajā gadījumā var arī kā $result[0] (vai [1]? - ilgi neesmu licis)

 

vobšem otrais patērē vairāk laika & enerģijas

 

NB a vēl mysql_unbuffered_query ira!

Link to comment
Share on other sites

līdzīgi ir, bet otrais atgriež ne tikai masīvu ar "kolonnu nosaukumiem" kā indexiem, bet uztiasa arī dublējošos masīva indexus ar kolonnu skaita numuru.
esi pārliecināts ? manuprāt tu runā par mysql_fetch_array($result)

 

bet mysql_fetch_array($result, 1) atgriež masīvu tikai ar kolonu nosaukumiem

un mysql_fetch_array($result, 2) atgriež masīvu tikai ar kolonu numuriem...

mysql_fetch_array($result) vai mysql_fetch_array($result, 3) atgriež ar abiem...

 

tāpēc es domāju ka mysql_fetch_assoc($result) == mysql_fetch_array($result, 1) nu jā laikam tur pareizi nevis 1, 2, 3 bet MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH bet strādā arī ar 1, 2, 3... itkā...

Link to comment
Share on other sites

Es nesaprotu, kaapeec neizmantot templates un neatdaliit html no php? Pec tam tachu daudz ertak ir labot html, ja vajag un pievienot ko jaunu, nebojajot php kodu, kas var gadities diezgan pagarsh, ja visu laiku ar echo... Ziniet, isteniba, varbut ja viss html un dizains ir pilniibaa gatavs, tad varbuut var to sagriezt un ievietot php kodaa ar echo, bet piemeeram, mans saits nav pilniiba html noformatizets un css utt. un es visas izmainjas lielisk varu veikt ieksh direktorijas templates/ , kur man glabaajas html un pa kaadam txt failam, kas ir templati! Kods no taa arii kljuust daudz vienkaarshaaks un iisaaks... hmm... ar echo noteikti nevajag paarcensties, bet var jau arii taisiit ar echo, tikai jaamaak buffereeties tad ar Output Buffering....

Link to comment
Share on other sites


×
×
  • Create New...