info o tvorebe www

Programovacie jazyky, rady, poradňa...
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

info o tvorebe www

Príspevok od používateľa funny102 »

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.
heker
Redeemer
Redeemer
Používateľov profilový obrázok
Príspevky: 14816
Registrovaný: 30 máj 2006, 20:27

Re: info o tvorebe www

Príspevok od používateľa heker »

Ano, cez include sa to riesi.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: info o tvorebe www

Príspevok od používateľa audiotrack »

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
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: info o tvorebe www

Príspevok od používateľa Michaelo »

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

Kód: Vybrať všetko

<?php
$menu = "slovencina";
....
...
?>
menu.php

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 subor
neppo
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 774
Registrovaný: 09 jún 2005, 15:33

Re: info o tvorebe www

Príspevok od používateľa neppo »

Michaelo: hadam nemas naozaj to menu spravene cez ELSE IF :? 10 poloziek = 10 ELSE IF ? Switch prikaz nepoznas ? :)
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: info o tvorebe www

Príspevok od používateľa Michaelo »

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:

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
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: info o tvorebe www

Príspevok od používateľa *****HERO***** »

o pocet riadkov vobec nejde. ide o eleganciu :welc:

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';
   }
}
pouzitie - 3 riadky, 0 ifov, 0 switchov a jedna velka pusa pre hera

Kód: Vybrať všetko

$menu = 'svk';
$menuRenderer = new MenuRenderer();
echo $menuRenderer->renderMenu($menu);
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: info o tvorebe www

Príspevok od používateľa Michaelo »

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.

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
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: info o tvorebe www

Príspevok od používateľa *****HERO***** »

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
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: info o tvorebe www

Príspevok od používateľa audiotrack »

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é :)
Numline1
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 858
Registrovaný: 04 dec 2006, 18:04

Re: info o tvorebe www

Príspevok od používateľa Numline1 »

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 :D.
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: info o tvorebe www

Príspevok od používateľa *****HERO***** »

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 ;)
Numline1
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 858
Registrovaný: 04 dec 2006, 18:04

Re: info o tvorebe www

Príspevok od používateľa Numline1 »

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
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: info o tvorebe www

Príspevok od používateľa audiotrack »

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
Napísať odpoveď