info o tvorebe www
info o tvorebe www
Ja by som sa chcel spýtať a zároveň si uľahčiť prácu, neviem ako sa to robí teraz no v minulosti dajme tomu pri šablóne sa pracovalo s Iframe, spravilo sa menu a cez iframe sa otvárali stránky 1.,2.,3.html.
Chcem to robiť teraz cez php include. Robieva sa to tak? alebo mám urobiť stránku index.html a od nej skopírovať a pomeniť texty a spraviť napr. kontakt.html a presmerovať ju rovno v menu. (bez iframe a include)
Čo sa týka multi-jazyku ako sa to rieši? Mám urobiť viac stránok, prepísať texty a spraviť si priečinky /sk /cz /en /hu alebo uložiť cely text do langsk.php a vyvolávať ho cez echo? (<?php echo $menu['7']; ?>)
hádam som to dobre vysvetlil.
Chcem to robiť teraz cez php include. Robieva sa to tak? alebo mám urobiť stránku index.html a od nej skopírovať a pomeniť texty a spraviť napr. kontakt.html a presmerovať ju rovno v menu. (bez iframe a include)
Čo sa týka multi-jazyku ako sa to rieši? Mám urobiť viac stránok, prepísať texty a spraviť si priečinky /sk /cz /en /hu alebo uložiť cely text do langsk.php a vyvolávať ho cez echo? (<?php echo $menu['7']; ?>)
hádam som to dobre vysvetlil.
Re: info o tvorebe www
Ano, cez include sa to riesi.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: info o tvorebe www
a s tým jazykom by som odporučil kombináciu tých dvoch čo si napísal. Jednak cez pole v súbore, ale tiež to organizovať cez url (aby nebol rôzny obsah na rovnakej url). A to pole určite cez asociatívne klúče, lebo keď potom taký súbor otvoríš, tak medzi tými $menu['7'] a $menu['4'] či $menu['15'] sa nikto nebude vyznať ktoré treba prepísať. Omnoho lepšie je $menu['index'] a $menu['kontakt']
-
Michaelo
Hardcore addict
- Príspevky: 6177
- Registrovaný: 16 júl 2008, 20:29
- Bydlisko: Pri PC
- Kontaktovať používateľa:
Re: info o tvorebe www
Tak tak. Ak si toto chces pozriet, tak si pozri ako to ma rieseny PHP-Fusion. Mas zlozku locale v nej zlozky s jazykami a subormi s prekladmi.
No vacsinou pouzivaju prave len cisla. Pouzivat na vsetko popisky ak je toho fakt vela je hrozne otravne a ak chces zistit co je co, jednoducho si otvoris subor s locale...
Inak, preco by si rad takto menil menu a mal viacero suborov pre jedno menu? Nie je to zbytocne?
Chces mat nieco ako mam ja na boku tuto?
https://www.zmaturujem.sk/slovencina
https://www.zmaturujem.sk/anglictina
Ak ano, ja skor pouzivam premennu ktoru definujem na zaciatku suboru a potom len v subore s menu kontrolujem aky ma obsah a podla toho vypisujem menu.
Nieco na tento styl (da sa to aj cez funkciu, aby si nemusel mat XYZ suborov na includovanie a typ menu posles cez premennu priamo do funkcie pri jej volani).
Osobne to mam v subore template.php kde je vlastne header, hlavne menu a lava strana, potom na pravej strane sa ukaze obsah suboru na ktory pozeras (tam kde napises include "template.php";) no a na konci toho suboru includujem subor footer.php kde je footer atd.
slovencina.php hned na vrchu
menu.php
No vacsinou pouzivaju prave len cisla. Pouzivat na vsetko popisky ak je toho fakt vela je hrozne otravne a ak chces zistit co je co, jednoducho si otvoris subor s locale...
Inak, preco by si rad takto menil menu a mal viacero suborov pre jedno menu? Nie je to zbytocne?
Chces mat nieco ako mam ja na boku tuto?
https://www.zmaturujem.sk/slovencina
https://www.zmaturujem.sk/anglictina
Ak ano, ja skor pouzivam premennu ktoru definujem na zaciatku suboru a potom len v subore s menu kontrolujem aky ma obsah a podla toho vypisujem menu.
Nieco na tento styl (da sa to aj cez funkciu, aby si nemusel mat XYZ suborov na includovanie a typ menu posles cez premennu priamo do funkcie pri jej volani).
Osobne to mam v subore template.php kde je vlastne header, hlavne menu a lava strana, potom na pravej strane sa ukaze obsah suboru na ktory pozeras (tam kde napises include "template.php";) no a na konci toho suboru includujem subor footer.php kde je footer atd.
slovencina.php hned na vrchu
Kód: Vybrať všetko
<?php
$menu = "slovencina";
....
...
?>Kód: Vybrať všetko
if($menu === "slovencina"){
echo "blablabla prvy riadok";
echo "bla bla druhy riadok";
echo "atd. atd. atd.";
}else if ($menu === "anglictina"){
echo "menu pre anglinu";
}
// Ak nie je menu definovane, neukaze ziadne, mozes nastavit nejake defaultne menu aby si to nemusel definovat pre kazdy suborRe: info o tvorebe www
Michaelo: hadam nemas naozaj to menu spravene cez ELSE IF
10 poloziek = 10 ELSE IF ? Switch prikaz nepoznas ? 
-
Michaelo
Hardcore addict
- Príspevky: 6177
- Registrovaný: 16 júl 2008, 20:29
- Bydlisko: Pri PC
- Kontaktovať používateľa:
Re: info o tvorebe www
Tie menu mam iba 4 (SJ, AJ, NJ a ostatne), takze switch je na to zbytocny.
A ano, switch poznam, pouzivam ho tam kde je realne vyhodnejsi, no kedze preferujem menej riadkov kodu (kedze pri switch musis dat stale break;), alebo aj rovnaky pocet riadkov ale aj s medzerami, castejsie pouzivam IF... Hlavne kedze tam nie je ziaden rozdiel v rychlosti a switch nerobi prisne porovnanie (===) ale iba klasicke (==), mi pride IF vo vacsine pripadov proste lepsi. Zasa nehovorim ze je je lepsie vsade pouzivat IF, no castejsie sa stane ze mi IF vyhovuje viac, hlavne ked potrebujes prisne porovnavanie, lebo v PHP sa akykolvek string (ktory neobsahuje cisla) rovna 0 (pozri si druhu tabulku a zameraj sa na stlpec s 0: http://www.php.net/manual/en/types.comparisons.php).
Aby si mal dusu na pokoji, prikladam priklad ako by to vyzeralo so switchom vs if:
A ano, switch poznam, pouzivam ho tam kde je realne vyhodnejsi, no kedze preferujem menej riadkov kodu (kedze pri switch musis dat stale break;), alebo aj rovnaky pocet riadkov ale aj s medzerami, castejsie pouzivam IF... Hlavne kedze tam nie je ziaden rozdiel v rychlosti a switch nerobi prisne porovnanie (===) ale iba klasicke (==), mi pride IF vo vacsine pripadov proste lepsi. Zasa nehovorim ze je je lepsie vsade pouzivat IF, no castejsie sa stane ze mi IF vyhovuje viac, hlavne ked potrebujes prisne porovnavanie, lebo v PHP sa akykolvek string (ktory neobsahuje cisla) rovna 0 (pozri si druhu tabulku a zameraj sa na stlpec s 0: http://www.php.net/manual/en/types.comparisons.php).
Aby si mal dusu na pokoji, prikladam priklad ako by to vyzeralo so switchom vs if:
Kód: Vybrať všetko
<?php
$menu = "slovencina";
// Switch - 22 riadkov
switch($menu){
case "slovencina":
echo "Menu X";
break;
case "anglictina":
echo "Menu Y";
break;
case "anglictina":
echo "Menu Z";
break;
case "nemcina":
echo "Menu J";
break;
case "rustina":
echo "Menu K";
break;
case "francuzstina":
echo "Menu L";
break;
default:
echo "Defaultne menu";
}
// If - 15 riadkov
if ($menu === "slovencina"){
echo "Menu X";
}elseif ($menu === "anglictina"){
echo "Menu Y";
}elseif ($menu === "anglictina"){
echo "Menu Z";
}elseif ($menu === "nemcina"){
echo "Menu J";
}elseif ($menu === "rustina"){
echo "Menu K";
}elseif ($menu === "francuzstina"){
echo "Menu L";
}else{
echo "Defaultne menu";
}-
*****HERO*****
Guru wannabe
- Príspevky: 2446
- Registrovaný: 08 máj 2006, 1:34
Re: info o tvorebe www
o pocet riadkov vobec nejde. ide o eleganciu
ved PHP je dynamicky jazyk, nie je vobec dovod to riesit takto skaredo
hm?
pouzitie - 3 riadky, 0 ifov, 0 switchov a jedna velka pusa pre hera
ved PHP je dynamicky jazyk, nie je vobec dovod to riesit takto skaredo
hm?
Kód: Vybrať všetko
class MenuRenderer{
public function renderMenu($lang)
{
return (is_callable($callable = array($this, '_renderMenu' . strtotupper($lang))) ? call_user_func($callable, $lang) : $this->renderDefaultMenu());
}
protected function renderDefaultMenu()
{
return 'menu default';
}
protected function _renderMenuSVK()
{
return 'menu SVK';
}
protected function _renderMenuEN()
{
return 'menu EN';
}
}
Kód: Vybrať všetko
$menu = 'svk';
$menuRenderer = new MenuRenderer();
echo $menuRenderer->renderMenu($menu);
-
Michaelo
Hardcore addict
- Príspevky: 6177
- Registrovaný: 16 júl 2008, 20:29
- Bydlisko: Pri PC
- Kontaktovať používateľa:
Re: info o tvorebe www
Elegancia ci nie, toto aj tak musis mat niekde hodene a zeberie ti to este viac miesta. A ked chalan nevie ako take nieco spravit, hned by som na neho s classmi nesiel, hlavne ked su pre takuto trivialnost uplne zbytocne.
Klasicky if/switch a bud pouzit template ako to mam ja, alebo to mat ako obycajnu funkciu do ktorej by si preposielal data a je to.
Klasicky if/switch a bud pouzit template ako to mam ja, alebo to mat ako obycajnu funkciu do ktorej by si preposielal data a je to.
Kód: Vybrať všetko
function generateMenu($menu){
$data = "";
switch($menu){
case "slovencina":
$data .= "Menu X 1";
$data .= "Menu X 2";
break;
case "anglictina":
$data .= "Menu Y 1";
$data .= "Menu Y 2";
break;
case "anglictina":
$data .= "Menu Z 1";
$data .= "Menu Z 2";
break;
case "nemcina":
$data .= "Menu J 1";
$data .= "Menu J 2";
break;
case "rustina":
$data .= "Menu K 1";
$data .= "Menu K 2";
break;
case "francuzstina":
$data .= "Menu L 1";
$data .= "Menu L 2";
break;
default:
$data .= "Defaultne menu";
}
return $data;
}
echo generateMenu("slovencina");-
*****HERO*****
Guru wannabe
- Príspevky: 2446
- Registrovaný: 08 máj 2006, 1:34
Re: info o tvorebe www
sak ja som dal len priklad, vobec to nemusi byt pouzitim OOP. ide o tu dynamickost a zbavenie sa statickych podmienok. akoze teraz je to uplne fuk, aj tak idem spat, len som chcel poukazat ze su aj krajsie moznosti 
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: info o tvorebe www
HERO zase s tou pusou opatrne, neviem či si ju za hento zaslúžiš
Istotne je to lepšie ako tie switchi a ify, ale tiež tam máš nejaké veci ktoré by som zmenil. Minimálne názvy funkcie renderMenuXX je zavádzajúci, keďže to žiadne menu nerendruje ale vracia string. Ak ten return bol len príklad aby to robilo to čo Michaelove, tak beriem, ale aj v praxi by tá funkcia zrejme nič nerendrovala (o to sa má starať pohlad, nie kontroller) ale len naťahovala dáta potrebné pre to menu, čiže namiesto stringu by vracala pole. Ale o rendrovaní na tejto logickej úrovni asi nemá zmysel hovoriť. Ak to má byť aj na ukážku string, aspoň cez konštanty aby sa to dalo použiť v podmienkach ďalej a nech sa nezanáša ten string kade tade po kode.
Ďalej, všetky tie funkcie z podtržníkom na začiatku by mali byť private, pokiaľ ich nie je potreba dediť a overridovať.
A ten ternár je nečitateľný, minimálne deklarovanie toho pola $callable by som dal na osobitný riadok. Nemá zmysel zneprehladňovať kod silou mocou len aby to bolo na čo najmenej riadkov.
ale hovorím, je to o 100x lepšie ako tu bolo napísané. Ešte tomu pridať phpdoc a je to použiteľné
Ďalej, všetky tie funkcie z podtržníkom na začiatku by mali byť private, pokiaľ ich nie je potreba dediť a overridovať.
A ten ternár je nečitateľný, minimálne deklarovanie toho pola $callable by som dal na osobitný riadok. Nemá zmysel zneprehladňovať kod silou mocou len aby to bolo na čo najmenej riadkov.
ale hovorím, je to o 100x lepšie ako tu bolo napísané. Ešte tomu pridať phpdoc a je to použiteľné
Re: info o tvorebe www
HERO, uplne idealne by to bolo vtedy, ak by nemusel mat pre kazdy jazyk zvlast metodu, ale rovno by mal jednu univerzalnu, ktora si skontroluje (podla DB alebo adresaru), ci dany jazyk existuje. Potom to spravit PSR compatible, refactornut, pushnut na GitHub, vydat pod GPL, packagnut na composer, pridat phpDoc a bude kral
.
-
*****HERO*****
Guru wannabe
- Príspevky: 2446
- Registrovaný: 08 máj 2006, 1:34
Re: info o tvorebe www
tak mne sa oznacenie "render" na podobne veci paci, zvykol som si to na to pouzivat. je to zauzivane aj vo vacsich frameworkoch. aj ked vracaju string a nevypluju to rovno na vysutp.
MVC uz je ina kapitola, to tu vobec nema zmysel riesit. islo mi len o nahradenie vacsieho bordelu mensim
a tie metody sa dedit a overidovat kludne mozu. v tomto mojom konkretnom priklade to asi zmysel nema, ale staci zapojit trochu fantazie a napr pouzit nejaku factory. tym ze je tam podjebnik, neznamena, ze by mali byt privatne. to je iba konvencia pre jazyky bez pristupovych modifikatorov. ale kedze v PHP ich mame, nevidim dovod to nepouzivat, aby som napr. oddelil metody, ktore sa volaju implicitne iba dynamicky z ostatnych metod danej triedy, cim odstranim aj pripadne konflitky v nazvoch
kazdopadne tieto veci sa vobec neriesia na urovni aplikacnej logiky, ale ako bolo spomenute tak v nejakej perzistencnej vstve, cim sa aspon oddelia data od zobrazenia. od dokonalosti to ma daleko. chcel som ich len priviest na ine myslienky
MVC uz je ina kapitola, to tu vobec nema zmysel riesit. islo mi len o nahradenie vacsieho bordelu mensim
a tie metody sa dedit a overidovat kludne mozu. v tomto mojom konkretnom priklade to asi zmysel nema, ale staci zapojit trochu fantazie a napr pouzit nejaku factory. tym ze je tam podjebnik, neznamena, ze by mali byt privatne. to je iba konvencia pre jazyky bez pristupovych modifikatorov. ale kedze v PHP ich mame, nevidim dovod to nepouzivat, aby som napr. oddelil metody, ktore sa volaju implicitne iba dynamicky z ostatnych metod danej triedy, cim odstranim aj pripadne konflitky v nazvoch
kazdopadne tieto veci sa vobec neriesia na urovni aplikacnej logiky, ale ako bolo spomenute tak v nejakej perzistencnej vstve, cim sa aspon oddelia data od zobrazenia. od dokonalosti to ma daleko. chcel som ich len priviest na ine myslienky
Re: info o tvorebe www
No, k tym podjebnikom sa este vyjadrim (tentokrat no-troll) ale mam pocit, ze v niektorom z novsich PHP PSR coding standardov sa upravuje ich pouzivanie, neviem, ci iba pri konstruktoroch, alebo pri vsetkych metodach, budem musiet pohladat. To iba na margo obsesivnej optimalizacie kodu a.k.a Laravel.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: info o tvorebe www
podtržníkom sa treba vyhýbať, nemajú v názve čo robiť. V php máme jasne definované klúčové slová pre viditeľnosť, a každé IDE s tým vie pracovať. Podtržníky sú hack vymyslený frameworkami typu CakePHP kde sa viditeľnosť nedá použiť. To že si nešťastne vymysleli svoj framework nie je dôvod používať to v ostatnom svete