Autor Zpráva
radvis
Profil
Ahoj,

už nějakou dobu programuji v php. Neprogramuji v něm na nějaké profesionálni úrovni, ale chtěl bych napsat své rs a proto se obracim na vás. Neznáte prosím nějaký postup jak správně takovou aplikaci navrhnout (nejlépe i databázi). Hledal jsem na netu, ale nenašel jsem nic "zajímavého". Díky všem za rady a přeji hezký večer.
Alphard
Profil
Podívete se na http://forum.nette.org/cs/4647-poznamky-k-navrhu-cms-kdyby.
Sám jsem na to ještě neměl čas, ale mohlo by to být zajímavé.
radvis
Profil
Podívám se, díky ... uvítám i další návrhy.
Majkl578
Profil
Před stavbou nějakého velkého, perspektivního systému bych osobně stanovil zhruba takové požadavky:
- znalost alespoň některých návrhových vzorů (MVC/P, Factory, Singleton, atd.)
- samozřejmě dobrou znalost PHP a taktéž OOP v něm (tj. ne že něco takového existuje, ale umět prakticky využít výhod - dědičnost, overloading apod.)

Dále bych před začátkem promyslel požadavky na výsledný systém a dle toho volil základní kameny - framework a ORM (případně jiné rozhraní k nakládání s daty v databázi). Pro mě je v současnosti volbou Nette Framework v kombinaci s ORM Doctrine 2.

Co může člověku, který umí programovat teoreticky, ale ne prakticky pomoci je vývoj společně s člověkem, který už zkušenosti má.

Bohužel jsem si nevšiml ani tady, ani na fóru Nette toho, že bys měl dostatečné znalosti (popsané výše). Tím ale neříkám, že s tím máš seknout, spíš naopak.
radvis
Profil
Chtěl bych využít nette framework. Netvrdím, že mám nějaké odborné znalosti. Bohužel se mi už nějakou dobu zdá, že stojím na místě se znalosti. O tom ORM si určitě něco přečtu a pokusím se to použít. Asi by nebylo od věci si přečíst jake útoky se v této době mohou objevit a jak jim zabránit(přivítal bych článek), díky.
happy
Profil
radvis:
pokud chces využít nějaký framework asi by ses měl zamyslet jak budeš řešit jeho aktualizace a dopady aktualizací na tvůj systém. Takže by ses měl rozhodně zaměřit na unit testy. Jinak rozhodně se vyvaruj "pokusím se to použít orm" - s velkou pravděpodobností tím jen značně snížíš výkon. První se orm opravdu nauč a pak ho teprve používej ve svém rs. (celkem by mě zajímalo jestli jste někdo viděli nejaký kurz kde by se vysvětlovalo orm? kdyžtak dejte odkaz.)

jinak dle mého je návrh aplikace značně podřízen tomu, pro koho aplikace bude. pokud chceš udělat sve rs a na něm nabízet weby klientům nebo odělat free systém pro všechny.
Nedávno jsem četl zajímavý článek kde autor psal "kdyby tak wordpress měl skvělý oop návrh" a v komentářích byla vtipná ale dle mého pravdivá reakce "pak by neměl 90% pluginů které teď má, protože by je lidi nedokázaky vytvořit".
Mastodont
Profil
"kdyby tak wordpress měl skvělý oop návrh" a v komentářích byla vtipná ale dle mého pravdivá reakce "pak by neměl 90% pluginů které teď má, protože by je lidi nedokázaky vytvořit"
Přesně tak. On je rozdíl, když do šablony píšeš
foreach ( posts() as ...)

než
foreach ( $this->getController('posts') as ...)
radvis
Profil
Další návrhy prosím?:)
Lamicz
Profil
radvis:
IMHO na začátek bych spíš doporučil jako databázovou vrstvu např. DIBI než Doctrine, na DIBI se v podstatě nedá nic zkazit. Obecně k návrhu toho není moc co říci - použít OOP, ne sadu tříd...
Alphard
Profil
happy:
elkem by mě zajímalo jestli jste někdo viděli nejaký kurz kde by se vysvětlovalo orm? kdyžtak dejte odkaz
Před pár hodinami vyšlo Doctrine 2: Úvod do systému, ale zase
najlepší ORM Framework pre PHP. Použijte nějaký vyhledávač. Lze najít docela dost informací i v češtině.
Nox
Profil
Ve článku píší, že se projekt značně ořezal až na ten základ (mapování), které to má dělat...tak by to snad nemuselo mít tak značný dopad na výkon..
radvis
Profil
Lamicz: Dibi používám spolu s nette.

Chtěl bych se ještě zeptat, čím začínáte při programování večí aplikace?
tiso
Profil
radvis: Začína sa zadaním a následne analýzou.
__construct
Profil
Dosť dôležitý je wireframing
radvis
Profil
tiso:
Mohl by jsi to prosím více popsat? Jakým zadáním a analýzou čeho.
__construct
Profil
[#15] radvis
Pozri si 11.lekciu tejto učebnice
happy
Profil
Alphard:
díky za odkazy. nicméně pod slovem kurz jsem myslel něco jako školení, které pořádá pan Vrána, nikoli články na internetu apod.
radvis
Profil
__construct: Pěkný ... nejvíc se mi líbí konec "dne iba jedna úloha, urobte to!!!":D
radvis
Profil
Jak se prosím dělá to, že když budu mít třeba <h3>Profily</h3> a teď to budu chtít mít v EN <h3>Profiles</h3>. A pak by mě zajímalo jestli je lepší di udělat v db soubory a tam ukládat cesty třeba k profilovému obrázku, obrázkům, které budou přířazené k novinkám nebo profilu atp. Nebo udělat ke každé tabulce další tabulku tj. users -> files_users (první příklad se mi zdá jednodužší, protože nebude tolik dalších tabulek).
Petr ZZZ
Profil
radvis:
jednodužší

<OT>
tuhé -> tužší
jednoduché -> jednodušší

Takže h se mění na ž, ch se mění na š. (Prosím neber to jako výtku nebo hnidopišství. Můj dojem je, že se snažíš psát pečlivě, chci ti prostě jen poradit.)
</OT>
radvis
Profil
Petr ZZZ:Jo, díky ... ale čeština mi bohužel moc nejde.
Lamicz
Profil
radvis:
Překlady se řeší často přes gettext. Já osobně používám jednoduchou tabulku v databázi, kde je český výraz a anglický ekvivalent. V šabloně mám značky {t}text{/t}, co se má přeložit + script, který rekurzivně projede všechny šablony, vytahá výrazy k překladu a upraví tabulku v DB (přeložený výraz se nechá být, nepřeložený se zapíše k překladu a který tam není se vymaže z DB). Mám to zjednodušený, neřeším množný čísla atp..

Co se týče obrázků, na to mám napsanou třídu Image, která spravuje vše od kontroly, resize (GD nebo Imagick), uložení (FTP nebo klasicky) až po výběr a zobrazení. Funguje to přes systém IDček z dané tabulky (ID záznamu) + ID typu (newsky, profily...) jako stromová struktura. Každá skupina má ID typu a max. šířku definovanou v asoc. poli, když šířka je menší nebo stejná maximální, obr. se pouze přesune do dané složky a zachová se vč. přípony. Když je větší, taktéž se přesune a zachová, ale vytvoří se k němu ještě náhled šířky podle toho asoc .pole a přípony podle orig.. Při výběru můžu určit jestli chci oba, jenom náhled, jenom orig., přepsat šířku, výšku atd... Výpis je plugin do Smarty pres fci {image}. Jinými slovy databázi na obrázky nepoužívám, využívám toho, že mám v tabulce autoincrement index.

Obecně když děláš rozsáhlejší systém, musíš udělat analýzu, co budeš potřebovat, a jak to co nejefektivněji implementovat.
radvis
Profil
ANo, analýzu mám v lpánu dělat podle "článku" co napsal __construct
__construct
Profil
radvis:
dělat podle "článku" co napsal __construct
Ten článok som nenapísal ja :-)
radvis
Profil
Ale dal jsi mi ho ty:D
TomaPar
Profil *
radvis:
Ze svých zkušeností bych na databázovou/ORM vrstvu určitě doporučil ORM Doctrine, připadně pokud by výsledný release byl plánovaný za cca půl roku, tak Doctrine2 (momentálně je D2 ve stavu beta). Je to kvalitní a ověřený ORM, existuje na něj spousta manuálů a příkladů. Navíc pro Doctrine i Doctrine2 existuje podpora v ORM Designeru, takže si hodně usnadníš práci. Místo odděleného vytváření modelu a ručního psaní všech entitních definic modeluješ vše v jendom a jednoduše exportuješ.

T.

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: