Portál AbcLinuxu, 14. května 2025 19:43

Dotaz: Proč se používá v url pomlčka a ne něco jiného?

9.9.2012 17:28 Amatherus
Proč se používá v url pomlčka a ne něco jiného?
Přečteno: 880×
Odpovědět | Admin
Ahoj, chtěl bych se zeptat, jestli má na něco vliv v url znak pomlčka? Proč všichni používají v delším názvu pomlčky? Já osobně bych preferoval spiše třeba podtržítka než pomlčky. Někde jsem četl, že taková adresa auto-moto-letadlo obsahuje pro vyhledávač 3 různá klíčová slova, kdežto adresa auto_moto_letadlo pouze jedno (ale nevím jaké to v tomto případě je). Jelikož používám class v programování a není možné používat názvy s pomlčkou, musím taové názvy nahrazovat podtržítkem + další problémy s pomlčkou. Díky za objasnění.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.9.2012 17:49 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to dáno tím, že vyhledávače ignorovaly podtržítka. To znamená, že z řetězce "auto_moto_letadlo" vzniklo jedno slovo "automotoletadlo" a zaindexovalo se to špatně. Pomlčky tím netrpí.

U názvů tříd je dobrý fígl v autoloadu překládat podtržítka na lomítka. Dobře se to pak strukturuje do podadresářů. Nebo snad natahuješ třídy přímo podle URL?
9.9.2012 18:01 l4m4
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Jelikož letadla nejsou motorky a motorky nejsou auta, nedává hierarchické URL typu /auto/moto/letadla moc smysl.
9.9.2012 18:16 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Správně. Proto by mezi těmi slovy neměla být podtržítka, ale spojovníky. Podtržítka ponechávám tam, kde potřebuji zmíněnou hierarchii.

Zrovna string "auto-moto-letadla" se hodí spíš jako klíč do databáze, než jako název třídy. Proto jsem moc nechápal dotaz.
9.9.2012 18:14 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
...Dobře se to pak strukturuje do podadresářů.
Jak to myslíš?
...Nebo snad natahuješ třídy přímo podle URL?
Ano, ty ne? Jak pak poznáš jakou třídu potřebuješ? ;)
9.9.2012 18:20 l4m4
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Týká se obsah stránky té třídy? Pokud ne, tak co dělá v URL nějaká třída?
9.9.2012 18:24 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Týká se obsah stránky té třídy? Pokud ne, tak co dělá v URL nějaká třída?
Ano, pokud mám v url http://www.domain.ltd/my-account/ tak volám class my-account. Jenže jak to psal KIT tak to tak možné udělat není možné, pokud již zavolám class my-account, těžko si změním název volené třídy, myslím si, že volat musím již požadovaný název té class, ale říkám jen můj názor, nejsem profík..
9.9.2012 18:27 l4m4
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Takže ne, obsah stránky se netýká té třídy. Obsah stránky by se týkal třídy, když by třeba stránka popisovala, jak ta třída funguje. Třída se akorát používá v implementaci stránky, což je implementační detail, který do URL nepatří a později ti bude komplikovat život.
9.9.2012 18:33 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Aha, a podle čeho mám jako poznat co uživatel očekává, když ne podle url? ;)
9.9.2012 18:35 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
To píšeš, jako kdybys pro každou podstránku dělal extra class.
9.9.2012 19:13 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
To píšeš, jako kdybys pro každou podstránku dělal extra class.
Ale ano, pro každou stránku mám extra class... Přece nebudu mít jednu class na 5000 row :-)
9.9.2012 19:16 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Tím chceš naznačit, že součástí tvých class jsou i texty článků?
9.9.2012 19:19 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Tím chceš naznačit, že součástí tvých class jsou i texty článků?
To samozřejmě ne, pokud daná stránka má vypisovat články, obstará to class která vypisuje pouze články ato všechny nebo za pomocí nějakého filtru, ale už neumím třeba přihlásit usero do systému nebo ho zaregistrovat..
9.9.2012 19:01 l4m4
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Jsme-li v módu diskuse ‚plácnu rádobyvtipnou pitomost a napíšu smajlík‘, jak naznačují tvoje příspěvky, přizpůsobím se, není problém...

Když URL nesouvisí s obsahem stránky, tak to nijak poznat nejde ;)
9.9.2012 19:16 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Když URL nesouvisí s obsahem stránky, tak to nijak poznat nejde ;)
Uniká mi pointa, co tím myslíš?
pavlix avatar 10.9.2012 13:02 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
LOL
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.9.2012 18:31 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
...Dobře se to pak strukturuje do podadresářů.
Jak to myslíš?
Asi takto:
include(str_replace('_', '/', $class));
...Nebo snad natahuješ třídy přímo podle URL?
Ano, ty ne? Jak pak poznáš jakou třídu potřebuješ? ;)
Simple Factory. Podle názvu klíče určím class, hodnotu dám jako klíč do DB.
9.9.2012 18:41 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Tak že jednotlivé proměnné v url ti spouží pouze jako nějaký identifikátor?
- Čili user odešle požadovanou URL
- Ty vezmeš potřebná data z URL
- pošleš je do mysql
- mysql ti vrátí název class
- zavoláš požadovanou class
hm, bez urážky, to si jako děláš ze mne prdel? :-)
tak já to dělám takto
- user odešle požadovanou URL
- zavolám požadovanou class
Nepotřebuji k tomu žádnou mysql ani v tom nevidím sebemenší problém...
9.9.2012 18:51 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Ne. Dostanu URL ve tvaru:
domena.cz/?stranka=auto-moto-letadla
Slovo "stranka" je pro mne klíčem pro zavolání class View. Jako parametr konstruktoru je string "auto-moto-letadla". Konstruktor si vytáhne text článku podle klíče "auto-moto-letadla" z DB. Prezenter to převede do HTML a zobrazí.

Pokud budu jen prohlížet, stačí mi jedna class View. Články ukládám do DB, kam ostatně patří.

Také k tomu žádnou MySQL nepotřebuji.
9.9.2012 19:03 l4m4
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
A nechci-li vypadat jako amatér, tak
domena.cz/?stranka=auto-moto-letadla
presentuji ven jako
domena.cz/auto-moto-letadla
Např. pomocí mod-rewrite, když už ne jinak.
9.9.2012 19:05 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Přesně tak. Nechtěl jsem ten příklad zbytečně komplikovat hezkými URL.
pavlix avatar 10.9.2012 13:05 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Mně přijde škoda ho komplikovat ošklivými URL.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
pavlix avatar 10.9.2012 13:03 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
A nechci-li vypadat jako amatér, tak
To lze přeložit i:
A nechci-li, aby bylo na první pohled poznat, že jsem amatér…
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.9.2012 17:59 l4m4
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Běžná konvence (byť ne universální) u tvorby identifikátorů v programovacích jazycích je, že podtžítko je slovotvorný znak. Tedy a_b_c_d_e je jeden identifikátor (slovo), a-b-c-d-e není.

Vyhledáváče dnes vesměs dovedou foo a bar uvidět ve foo-bar i foo_bar (obzvlášť když se to jinak nevyskytuje), ale na druhé straně taky chápou, že kdy zadám foo_bar, chci to hledat jako jeden identifikátor, ne dvě slova.

Podtržítko je ale ‚divný znak‘, který normální lidi nepoužívají a netuší, kde ho mají na klávesnici.

Takže pokud se stránka týká třídy auto_moto, tak ať má v názvu auto_moto. Pokud se ale týká aut a motorek, do názvu patří auto-moto, protože pomlčkou[*] spojují slova lidi.

[*] Jo, já vím, že ASCII 0x2D není pomlčka, ale už to mě z normálních lidí vyděluje...
9.9.2012 19:23 Amatherus
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pořád ale nevím, jak po zavolání class s názvem my-account spustit class s názvem my_account.
19.9.2012 09:15 George O.
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Si napis nejakej router na to, ne? Rozparsujes s nim url a pak zavolas tridu + metodu, ktera je prirazena k dane nebo obecne route a jeste si muzes udelat hezkou url... a to vse jen diky par regularnim vyrazum.

napr.: domain/product/detail/25 ti muze router najit jako: controler: product; method: detailAction, id: 25;

anebo domain/product/list jako: controler: product: method: listAction;

pak neni problem nainstancovat spravnej controler a metodu a mit v tom nejakej system. Neni treba mit na obsluhovani produktu pro detail a vypis mit dve classy, staci ti jedna classa a dve metody, protoze logicky spravujes porad product...

snadno s nim vyhodis i 404 :-)
19.9.2012 09:44 Kit
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Však už jsi dostal odpověď:
$class=str_replace('-', '_', $atrib);
$objekt=new $class();
Jenom je problém v tom, že je to rada, jak se máš střílet do nohy.
10.9.2012 09:58 Sten
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jednoduše protože v angličtině se spojovník (nikoliv pomlčka) běžně používá pro spojení více slov do jednoho
Josef Kufner avatar 17.9.2012 23:23 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Proč se používá v url pomlčka a ne něco jiného?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ftip je v tom, že odkazy jsou obvykle podtržené a podtržené podtržítko je blbě_vidět.

Doporučuju používat podtržítka všude vyjma URL, pak stačí prosté obousměrné mapování podtržítko–pomlčka, pokud potřebuješ z toho dělat identifikátory.

Používání lomítek je dobrá věc, otázkou pak jen je, zda u tříd radši nevyužít jmenné prostory (zpětné lomítko v PHP).
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.