Autor | Zpráva | ||
---|---|---|---|
Tomashekk Profil |
#1 · Zasláno: 3. 2. 2011, 21:01:42
Před nějakou dobou jsem psal do sekce "Jak něco udělat" ohledně zrychlení a zjednodušení kodu. Kcko mi poradil si udělat šablony. To mi krásně zpřehlednilo můj kod, ovšem nyní se peru s tím, jak to dodělat aby to fungovalo.
Snažím se, aby všechny funkce se volali ještě před hlavičkou (abych docílil i dynamického title). Takže před hlavičkou se mi výsledky ukládají do proměnné a v těle html pak jen echuji danou proměnnou. Ovšem celé toto řešení se mi zdá na palici. Jak to udělat lépe? Ukázka kódu: index.php <?php require_once('inc/config.php'); require_once('inc/conn.php'); include('inc/function.php'); include('scripts/class.Paging.php'); switch ($_GET['view']) { case "story": $obsah = story($_GET['id']); break; default: $obsah = main(); break; } if(is_array($obsah)) { $web = getTemp("themes/"._THEMES."/theme.html", array("menu" => $menu, "obsah" => $obsah[1] , "motto" => $motto, "strankovani" => $obsah[2],)); } else { $web = getTemp("themes/"._THEMES."/theme.html", array("menu" => $menu, "obsah" => $obsah , "motto" => $motto, "strankovani" => "",)); } //Dynamický title if(!empty($obsah[3])) $extr_title = $obsah[3]; ob_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><?php echo _TITLE.$title; if(!empty($extr_title)){ echo " - ".$extr_title;} ?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="<?php echo "themes/"._THEMES."/style.css"; ?>" rel="stylesheet" type="text/css" /> <link href="favicon.ico" rel="shortcut icon" /> </head> <body> <?php echo $web; mysql_close(); ?> </body> </html> ukázka jedné funkce: function story($id){ $dotaz = "SELECT * FROM `".DB_PREFIX."story` WHERE `ID` = '".$id."' "; $vysledek = mysql_query($dotaz); while ($radek = mysql_fetch_array($vysledek)) //Načte výsledný řádek do asociativního pole { mysql_query("UPDATE `".DB_PREFIX."story` SET `visit` = visit +1 WHERE `ID` = ".$id." "); $obsah[1] = getTemp("themes/"._THEMES."/sablony/clanek.html", array("nazev" => htmlspecialchars($radek['name_cs']), "popis" => $radek['popis_cs'], "text" => htmlspecialchars($radek['text_cs']), "zdroj" => "Zdroj článku: ".htmlspecialchars($radek['zdroj']), "napsal" => "Článek napsal: ", "autor" => htmlspecialchars($radek['autor']), "dne" => $radek['date'], "print_img" => "<a href=\"modules/print/clanek.php?id_clanku=".$radek['ID']."\" target=\"_blank\"> <img src=\"themes/"._THEMES."images/icon/print.gif\" alt=\"Tisknout článek\" style=\"float:right; margin-right:50px;\"/> </a>", "koment_upozorneni" => "Komentáře vlastní jejich autoři. Neodpovídáme za jejich obsah.", "komentare" => file_get_contents("../new_web/modules/komentare/index.php"),)); $obsah[3] = htmlspecialchars($radek['name_cs']); return $obsah; } } |
||
Alphard_ Profil * |
#2 · Zasláno: 3. 2. 2011, 21:19:41
Princip je docela správný, začínají tam být náznaky MVC.
Jak to udělat lépe nelze říct několika slovy. Buď vylepšujte vás systém, tj. ze switch udělat pořádný router, akce oddělit od samostatných souborů, dát tomu nějaký rámec, chytřejší šablony, ..., nebo zkuste nějaký framework. |
||
Tomashekk Profil |
#3 · Zasláno: 3. 2. 2011, 21:21:03 · Upravil/a: Tomashekk
Alphard:
„udělat pořádný router, akce oddělit od samostatných souborů, dát tomu nějaký rámec, chytřejší šablony“ co tímto myslíte přesněji? framework jsem za prvé vůbec nepochopil a za druhé, chtěl bych vše udělat své... abych pravdu řekl, nikdy jsem nějak ani neřešil k čemu framework vůbec je |
||
Alphard Profil |
#4 · Zasláno: 3. 2. 2011, 22:57:11
Tomashekk:
„co tímto myslíte přesněji?“ To lze těžko stručně vysvětlit. Podívejte se trochu třeba na Nette (nebo jiný framework). I když ho nechcete používat, uvidíte MVC návrh a životní cyklus aplikace. „chtěl bych vše udělat své“ Nebyl bych tak dogmatický, ale nejste s tímto názorem sám. |
||
Tomashekk Profil |
#5 · Zasláno: 3. 2. 2011, 23:41:40
Alphard:
Jak sleduji videa o framework, tak si říkám.. Nikdy nebudu schopen vše udělat sám. Rád bych nakonec framework využíval. Ovšem asi se nejdříve budu muset naučit OOP :( .. zvládám sotva základy C# které OOP využívá, tudíž nějaký základ mám, ale v PHP nezvládnu pomocí OOP ani blbý výpis stringu :( Takže asi se nejdřív musím naučit OOP a pak na framework |
||
Tori Profil |
#6 · Zasláno: 4. 2. 2011, 08:19:48 · Upravil/a: Tori
Tomashekk:
Měla jsem nedávno podobný dotaz a __construct mi poradil tenhle článek. Je to vysvětlení MVC frameworku na úplně jednoduchém nicméně kompletním příkladu, pochopila jsem z toho princip podstatně líp než z tutoriálu Nette (nebo možná zopakování jiným slovy pomohlo, nevím). Některé věci jsem si přepsala, ale kostru používám a teď když jsem si už zvykla, připadá mi to o dost přehlednější, než moje předchozí pokusy. |
||
Tomashekk Profil |
#7 · Zasláno: 4. 2. 2011, 11:05:35
Tori:
Děkuji za link. Letmo jsem na článek koukl a zase OOP :) .... Hold se ho musím asi naučit. O to to pro mne bude složitější. |
||
Tomashekk Profil |
#8 · Zasláno: 4. 2. 2011, 11:11:33
Alphard:
„chytřejší šablony“ Tím jste myslel co prosím? Takhle šablony jsem dělal poprvé. Tudíž prosím o vysvětlení či radu. Děkuji :) |
||
Kcko Profil |
#9 · Zasláno: 4. 2. 2011, 14:07:20
Tomashekk:
Pokud chceš dynamický title, můžeš použít i output funkce viz nedávné téma Nette bych Ti zatím nedoporučoval, pro začátečníka to není vhodné, ty si tím akorát zamotáš hlavu a budes neštastný z OOP :-) |
||
Alphard Profil |
#10 · Zasláno: 4. 2. 2011, 14:36:48
Tomashekk:
> „chytřejší šablony“ > Tím jste myslel co prosím? Já nevím, jak přesně je máte řešené teď, ale úvodní ukázka plnění šablony vypada docela ošklivě. Funkce jako htmlspecialchars() se obvykle řeší na úrovni šablon, do šablony by mělo jít předat celé pole/objekt, u vás $radek. Proč tam máte statické "napsal" => "Článek napsal: ", opravdu nevím. To jsou asi ty nejzákladnější věci.
Pak samozřejmě různá dědičnost šablon, podmínky, cykly apod. |
||
Tomashekk Profil |
#11 · Zasláno: 5. 2. 2011, 13:33:57
Kcko:
Díky za rady.. :) Alphard: Stále to nepobírám, hold jsem vždy měl s teorií problémy. :) ... Jinak, mám tu vlákno ODKAZ a abych pravdu řekl, ani jedno z toho mi nepomohlo. Rád bych se naučil dělat weby v OOP a s pomocí modulu MVC ... |
||
jsim Profil |
#12 · Zasláno: 5. 2. 2011, 13:51:38
ale jak jinak se chceš naučit OOP, než studiem? Bez teorie to prostě nejde. OOP není jen naučení se syntaxe určitého jazyka a obalení funkcí do tříd ..
V tom vlákně jsem ti vypsal knihy, které by ti mohly pomoci s pochopením OO, nicméně jsi je asi ignoroval, protože teorie ti smrdí? |
||
Tomashekk Profil |
#13 · Zasláno: 5. 2. 2011, 14:02:42
jsim:
nee, tak jsem to nemyslel... Já sám vlastním nějaké knihy.. Já proti studiu nic nemám, ovšem to že mi odpoví že od toho jsou VŠ mi příjde na palici. Jako to abych se naučil OOP, znamená že musím jít na vejšku? Jde o to, že mám OOP bez předchozích znalostí a pak PHP objektově orientované. Ovšem spousty věcí v tom nepobírám. Knihy co jsi mi dopořučil, sice zřejmě budou super, ovšem musím si je najít v ele. podobě. Neber to hned, že jsem ignoroval tvůj příspěvek, ale naopak |
||
jsim Profil |
#14 · Zasláno: 5. 2. 2011, 14:06:36
Samo že výšku na to mít nemusíš, to je blbost ... pokud mi dáš email, knížky ti v ele. podobě pošlu.
|
||
Tomashekk Profil |
#15 · Zasláno: 5. 2. 2011, 14:08:12 · Upravil/a: Tomashekk
jsim:
super, budu velice rád... tomas.kulhanek@mops.cz Jde o to, že construct to podal tak, že pokud nemám vejšku, tak nebudu umět OOP (což sám vím že je blbost).. Nevím zda to tak myslel, ale to je jedno |
||
jsim Profil |
#16 · Zasláno: 5. 2. 2011, 14:16:28
nevím proč, ale nejde mi na to na tvůj mail poslat ... napiš mi na icq, které mám v profilu
|
||
natlaid Profil * |
#17 · Zasláno: 5. 2. 2011, 14:19:36
Tady máš pár článků, nevím jestli ti helpnou:
Programujte.com - OOP v PHP Živě.cz (Těch pár článků o OOP) |
||
jarda0001 Profil * |
#18 · Zasláno: 5. 2. 2011, 14:42:40
jsim:
Ahoj, můžu taky poprosit o el. knihy? Díky jkratochvilj@seznam.cz . |
||
Časová prodleva: 13 let
|
0