Jump to content
php.lv forumi

5 lietas, ko Tu nezināji par PHP. 2 no 5. Pankūku princips


black

Recommended Posts

Turpinot nelielo rakstiņu sēriju par 5 lietām, kuras Tu nezināji - pankūku princips jeb vieds, kādā es iesaku izkārtot veidnes (templates). Raksts izlasāms šeit. Ja ir kādi komentāri, viedokļi vai jautājumi, lūdzu postējiet šeit, vai arī blogā. Ceru, kādam noderēs.

Link to comment
Share on other sites

ja godīgi - neko nesapratu, pārāk daudz latviskojumi un 'pareizā referātu valoda'. tik to uzķēru ka smarty jālieto..

 

edit: palasīju vēlreiz un laikam sapratu ka pankūku princips nav nekas ar apaļu dizainu, bet gan tas ka katram satura elementam pa savam templeitam, bet tā jau, vairāk vai mazāk, visi aptuveni taisa kas izmanto templeitus.

Edited by v3rb0
Link to comment
Share on other sites

Iesācēji parasti pieļauj 2 kļūdas - viņi baidās par to, ka veidņu lietošana ievērojami samazinās viņu lietojumprogrammu ātrdarbību (tā parasti nav!),
Man gan liekas, ka tieši tā arī ir - ātrdarbība samazinās.

 

Daži sāk veidot paši savas veidņu funkcijas, nereti izmantojot regexp, šādi iebraucot vēl dziļāk auzās, nekā bija sākumā.

Kas vainas regexpiem?

 

Un vispār - kā jau sen zināms - php pati par sevi IR templeišu sistēma. To arī vajag tā izmantot: http://laacz.lv/blog/2004/11/03/templates/

 

Par MVC saistībā ar PHP var skaisti palasīt te: http://www.tonymarston.net/php-mysql/model...controller.html

Edited by bubu
Link to comment
Share on other sites

Iepriekš saņēmu komentāru par to, ka 'cērtas acīs' valoda. Šoreiz centos references saukt par atsaucēm, aplikāciju par lietojumprogrammu, lielas jēgas, acīmredzot, no tā nebija.

 

Par ātrdarbības zudumiem - es jau nesaku, ka, izmantojot templates, programma strādās ĀTRĀK. Taču, ņemot vērā manu pieredzi, ātrdarbība nesamazinās tik ievērojami, lai neatmaksātos visas templeišu labās īpašības (koda lasāmība, utt). Galu galā, datori paliek arvien ātrāki un tagad lētāk sāk palikt nopirkt pāris papildus kastes, nevis algot papildus programmētājus.

 

Laacz raksta: “kālab vēlreiz jāizgudro velospiēds”. Tieši tā arī ir galvenā doma par regexpiem un citām pašu būvētām template sistēmām.

Edited by black
Link to comment
Share on other sites

kāda ir templeišu sistēmas - tā paša nelaimīga smarty, labās īpāšības salīdzinot ar paša php izmantošanu kā templeitu valodu - kontrolerī salasam visu vajadzīgo mainīgos vērtības un beigās includo vienu php failu (kuru ja gribam lepni var saukt par viewu vai templeitu).

 

kādus 2gadus lietoju smarty visur kur vajag un nevajag, bet nu beidzot 'apnika' :)

Link to comment
Share on other sites

Vienalga nesaprotu, kāpēc tu tā noliec regexpus.. A kas smarty ir tik labāks par regexpiem? Pie tam, domā ka šams nezimanto regexepus?

 

Manurpāt tas velosipēda teiciens bija tēmēts ne tikai uz pašrakstītām templeišu sistēmām, bet gan arī uz to pašu smarty, u.c. tādā veida libiem.

Link to comment
Share on other sites

kāda vaina paša savam RegExp-built templeišu dzinim, kas nokompilē templeiti (.tmpl) un pārvērš par PHP kodu (.php)...

 

protams var rakstīt uzreiz PHP.. bet ja vajag on-line ar peli bakstīt blokus pa-labi-kreisi, tad imo `iezīmes` izmantot ērtāk un vēlāk tikai nokompilēt atliek ;)

Link to comment
Share on other sites

Man kaut kā sanāca doties otrā virzienā - sāku ar PHP templātēm, tad sāku izmantot dažādus citus variantus, līdz beidzot apstājos pie Smarty. Var jau būt, ka kādu dienu sapratīšu, ka tas viss ir priekš kaķiem, un sākšu lietot kaut ko citu :D

 

Par iemesliem, kāpēc Smarty - lasi šeit. Taču runa jau nav par to, vai lietot vai nelietot tieši Smarty. Katrs jau var izmantot to, kas pašam vislabāk patīk, un kurā kods rakstās visātrāk un vislabāk. Man nav nekas arī pret regexpiem kā tādiem, pieņemu, ka ir reizes, kad labāk rakstīt pašam savu kodu (piem., ja ir nepieciešama super-duper ātrdarbība, un Smarty šķiet pārāk lēns), taču 99 gadījumos no 100 - kāda jēga vēlreiz pārrakstīt to, ko kāds jau ir uzrakstījis?

Edited by black
Link to comment
Share on other sites

nu takš debīls var palikt no tā koda..

jāmācās vēl viena valoda, kura nebūt nav tā vieglākā - php, perl un OOP miseklis kaut kāds...

 

tādai NAV jābūt templeit valodai... tici man, konkrētajā gadījumā labāk izmantot pure-php

 

{if $smarty.session.user and ( $user_type eq "editor" or $user_type eq "admin" )}
<input type=checkbox name=edit value="y"> edit <br>
{/if}

Link to comment
Share on other sites

tak es nesaprotu kur ir prieks rakstīt visu garāk, ja PHP pats pa sevi ir tik īss cik vien var, tas Smarty tikai visu pagarina, kā arī nekas labs tas nav.. manā uzskatā viss ir labs ko pats brūvē .... tātad mana devīze lieto to ko pats taisīji ... ar domu ja taisi mājaslapu, protams neiet runa par softiem piem. apacis/mysql utt .. bet tieši par kodiem,klasēm,templeitiem .....

 

NOST AR SMARTY

Link to comment
Share on other sites

par why smarty..

* Designers can't break application code - ja php izmanto par templeitu valodu un atdala scripts - templeits panak tas pats. shis vairak attiecas uz templeitu ideju kaa taadu ne smarty.

 

* Errors in the templates are confined to the Smartys error handling routines - tikai fails nav atrasts, nepazistams tags, bet ne visas sintakses kludas.

 

* With presentation on its own layer, designers can modify or completely redesign it from scratch, all without intervention from the programmer - php templeitu variantā nevar?

 

* Programmers aren't messing with templates. - kurs programee web lapu bez html izmantosanu, piemēru?

 

* Templates are a close representation of what the final output will be, which is an intuitive approach. - nav intuitīvi kad sākas lielas datu struktūras.

 

* You are not opening your server to the execution of arbitrary PHP code -php templeitos ir? raksti bez padoto variablu inkludosanas un būs tas pats.

Edited by v3rb0
Link to comment
Share on other sites

Laacz raksta: “kālab vēlreiz jāizgudro velospiēds”. Tieši tā arī ir galvenā doma par regexpiem un citām pašu būvētām template sistēmām

black tas velosipēds ir domāts par tā paša Smarty .. kamdēļ gan if nosacījumi un loopi ir jāiplementē no "itkā" koda atdalītas templeitu sistēmas..

Acīmredzot tas nozīmē ka patiesībā webrisinājumos (php) kodu atdalīt no html ja pati valoda ir definēta kā html-embeded diezkas prātīgs nesanāk.

 

Līdz ar to gala variantā nav starpības <td><?=$var?></td> un <td><% $var %></td> pretēji tam ka tu otrā gadijumā vazā līdzi veselu sistēmu ("freimworku") asignē papildus mainīgos pārsē outputu.

 

 

 

Esam izmantojuši savos projektos smarty bet viss beidzas ar to ka vai nu drausmīgi jāeditē paša Smarty libi vai naturāli jaraksta php kods kas ģenerē outputu.. un visa iecere līdz ar to aiziet nebūtībā.

Link to comment
Share on other sites

{if $smarty.session.user and ( $user_type eq "editor" or $user_type eq "admin" )}
<input type=checkbox name=edit value="y"> edit <br>
{/if}

 

Manuprāt, piemērs nav padevies īpaši labs. Cik es saprotu, kāds cenšas templeitē noteikt access tiesības resursiem :) Templeites ir domātas datu prezentācijai, nevis loģikai. Ja nepieciešams pārbaudīt, vai lietotājam ir šādas vai tādas tiesības, tad to būtu jādara business loģikai. Tie, kas grib templeitēs izmantot ifus un loopus (ja neskaita atsevišķās vietas tabulas izdrukāšanai, piemēram), neatdala prezentāciju no biznesa loģikas, attiecīgi zūd jēga no templeišu izmantošanas vispār. OK, 100% to izdarīt tāpat nav iespējams, taču Smarty templātēs nebūtu jāmočī iekšā ifi un elsi.

 

Kā jau teicu iepriekš - katra paša ziņā tas, vai izmantot Smarty, phpTemplate, rakstī kaut ko pašam, vai kā te viens gudrenieks nesen ieteica - rakstīt visu outputu ar "echo".

Link to comment
Share on other sites

Kāpēc nelietot templeites, vēl var paskatīties te: Templating

 

Plus no bubu dotā linka uz laacz rakstu atļaušos citēt 4. komentāru, kas manuprāt visspilgtāk raksturo šo tēmu:

:) Par šito jautājumu pirms pāris dienām stāstīju vienam cilvēkam.

Ir trīs man zināmas PHP programmētāja pakāpes:

1) duraks. Šodien ir <?= $datums; ?>

2) elīc experts. Šodien ir {–$DATUMS|txt–}

3) normāls vecis. Šodien ir <?= $datums; ?>

Edited by Analgiins
Link to comment
Share on other sites

×
×
  • Create New...