Autor Zpráva
kuba123
Profil *
I když jsem se v minulosti zabýval tvorbou stránek docela dlouhou dobu musím říct, že to trvalo dost dlouho než jsem začal používat třídy a jsem vlastně stále nováček. Teď se po delší době vracím k tvorbě v php a měl jsem možnost si prohlédnout jeden RS a dojít k zajímavému poznání o tom jak se používají šablony a jak si ušetřit spoustu problémů. Nicméně by mě zajímalo, jestli tento způsob rozvržení webu používají i ostatní programátoři, kteří navrhují nebo upravují RS. Ještě doplním že pod pojmem RS si nepředstavuju jen systém na zveřejňování článků, ale jakýkoliv propracovanější systém, který umožňuje spravování např. diskuse, inzerátů na seznamce apod.

Takže nahlédl jsem do onoho RS a zjistil, že struktura webu je asi takováto. V hlavním adresáři několik základních podadresářů jako admin se skripty pro admina, classes (několik tříd), images, include, members - skripty pro členskou oblast, a templates kde jsou umístěny podadresáře s šablonami, tedy věci, které zpracovávají již hotové proměnné a konstanty pro účely odeslaní html. Nejvíce mě fascinuje to, že všechny hodnoty, které určují chování programu jsou dány konstantami, které se načtou v konfiguračním souboru a souboru s nastavením. Na jednu stranu problematické je, že se při běhu každého skriptu musí načíst všechny konstanty a také to, že při programování nějakého skriptu si musí člověk pamatovat všechny konstanty, které se používají k dané věci. Pak následuje výpočetní část, ve které se odesílají dotazy pro mysql a vypočítávají se data určená pro odeslání prohlížeči. Třetí věc, je to že tyto data se musí znovu přiřadit ke konstantám, před tím než se načte příslušná šablona, která využívá těchto konstant. Tento třetí bod mě nejvíce fascinuje, protože se tím šetří dost času, nemusím psát složitě přístup k atributům různých tříd, což by při přepisování již tak složitě vypadající šablony ještě více zdržovalo. Jako hlavní výhodu ale vidím fakt, že pokud měním cokoliv v druhém bodě , tedy ve výpočetní části (např. změna názvů proměnných či atributů tříd, přesun atributů z jedné třídy do jiné třídy), nemusím již tyto změny provádět v šabloně (kdykoliv kdy provedu změny ve výpočetní části. Např. při změně názvu atributu, bych musel měnit šablony. Takto změním jen ty hlavní operační skripty.

No zajímal by mě váš názor na využití konstant. Třeba to děláte jinak a upřednostňujete využití tříd přímo v šablonách?
Str4wberry
Profil
Otázka zní, zda se (ne)bát uložení veškerého výstupu webu nejprve do PHP proměnných, které až nakonec vypíše šablona?
kuba123
Profil *
Šablona vypisuje hodnoty konstant nebo proměnných. A v čem je to riziko?
Camo
Profil
kuba123:
"kdykoliv kdy provedu změny ve výpočetní části. Např. při změně názvu atributu, bych musel měnit šablony."
To si neviem ani predstaviť, že zmením názvy atribútov, alebo metód... , veď to prestane fungovať každý kód, ktorý takú triedu používa, nie len šablony. To asi prínosné moc nebude...
"Takto změním jen ty hlavní operační skripty."
Čo to znamená "takto"?
kuba123
Profil *
Camo:
Ten RS na který jsem narazil sice má pár tříd, ale vesměs jich moc nepoužívá. Snažím se to trochu předělat, takže vytvářím třídy; některé proměnné přesouvám do attributů ve třídách. No uvidím jak se to vivine, ale to se mi právě může stát, že budu něco někam přesouvat. Když to bude hotové tak už to pak samozřejmě nemusím mělnit. Mě se to jeví jako výhodné, že už pak nemusím provádět změnu v těch šablonách, pouze pracuji s těmi operačními skripty. Slovem "takto" myslím tu činnost, že provádím nějaké změny v hlavní operační části, ale nemá to vliv na fungování těch šablon. Například přejmenuju nějaké proměnné v těch hlavních skriptech a dám jim jména, která lépe vyhovují mě. Dělám to proto, že si ten RS potřebuju trochu přizpůsobit aby seděl na moji potřebu.
Camo
Profil
kuba123:
Tak dajme tomu, že nejaká trieda "pagination" vytvorí premennú "pages", kde by mali byť podľa mňa odkazy na ďalšie stránky. Ako to teda myslíš, že šablona nepotrebuje vedieť, názov premennej v ktorej sú tie odkazy? Ako sa k nim dostane?
aDAm
Profil
A co takhle přejít na MVC či MVP model? oddělit si jednotlivé vrstvy, napsat si patřičné fasády atd.? A pokud je někdo odpůrce dostupných FW tak mu nic nebrání jít vlastní cestou...já takto kdysi šel, od klasického rs založeném na funkcích atd. které se pak rozšířilo o třídy a funkční bloky, nakonec se z toho vyloupl takový malý FW a jako finále to letělo ze stolu a vzal se normální FW na kterém se to staví znova a lépe ;)
kuba123
Profil *
Camo:
A jo, tak teď se znovu na to dívám a máš pravdu, že tam i ty proměnné s polemi jsou. Ty konstanty se vztahují spíše jen k takovým věcem, které se neopakují jako např. Název diskuse, Datum vytvoření diskuse, Název autora diskuse, různé položky v menu apod. Dále u tabulek jsou různé údaje, které jsou volitelné a ty jsou v těch konstantách a říkají jestli se ta určitá věc má zobrazit nebo ne. V konstantách je ještě uložené například odkaz na profil autora, odkazy na stránkování výsledků apod. Takže ne vše je v konstantách, ale i tak se mi zdá, že je lepší použít konstanty pokud to jde. Přeci jen ty pole už jsou vypysovány pomocí tříd, tak to vypadá například takto:

        <?if(SHOW_HEIGHT){?><tr><th><?=HEIGHT?>:<td><?=$Results->all->heights[$p]?></tr><?echo "\n";}?>
        <?if(SHOW_WEIGHT){?><tr><th><?=WEIGHT?>:<td><?=$Results->all->weights[$p]?></tr><?echo "\n";}?>



aDAm:
Znám jen pojem RS a ty další zkratky jsem možná slyšel ale zapomněl jejich význam. Kdysi jsem se snažil udělat si vlastní stránky a měl jsem vlastní systém ještě bez tříd, ale strašně sem se do toho zamotal, tak to nefungovalo moc dobře a spolehlivě. Ten model co jsem tu popsal mi přijde docela snadný, alespoň pro mě. Rozhodně jednodušší organizace než jsem používal kdysi. Měl jsem totiž všechno striktně oddělený v adresářích a souborech, které se dělili takto: 1) hlavní větev v index.php, načítala nějaká základní věci jako funkce, hlavičku, a konfiguraci 2) formuláře 3) zpracovávání odeslaných dat - už si moc nepamatuju, asi jen načetlo bod čtyři 4) kontrola dat 5) buď zpracování dat pro zápis nebo zobrazení výstupu. To máš 5 až šest adresářů a serii souborů + adresář se styly a obrázky. No bylo to moc složité.


Ten systém se kterým jsem se teď setkal vlastně má formuláře a výpysi z diskusí, vzkazů, apod. vše na jednom místě v adresáři templates/mytemplate


oprava: výpisy
aDAm
Profil
Aha, tak pokud je pro tebe 5-6 adresářů komplikace tak to pak asi jo ;) já těch adr mám nyní trochu více, pokud počítám i zanoření atd. Prostě rozdělená aplikace na samotnou app, template, static files, libraries.....cesta konstant je imho špatná. Když už tedy budeš řešit šablony ať už ručně či nějakým šablonovacím systémem tak budeš mít možnost si tam předat konkrétní hodnoty a s nimi pracovat. Chce to ale myslet trochu do budoucna na případné změny, refactor atd, abys pak nedopadl tak že to po roce budeš zhazovat ze stolu s tím že to upravit by bylo horší než to napsat znova.
kuba123
Profil *
Zdá se mi, že kdybych tam chtěl dát jiné šablony tak by to nemělo být těžké. Co si myslel tím FW?
aDAm
Profil
FW = framework. Ono je šablona a šablona. Můžeš si tu šablonu rozbít na x podšablon, využívat nějaké dědění, volání atd....řešení je spousty.
kuba123
Profil *
aDAm:
Jo, pro mě je FW moc složitý, už jsem zkoušel.
aDAm
Profil
Tak si zkoušel špatně a nebo sis nabral moc velké sousto, je třeba jít po částech, tutorialy, pokusy atd.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: