| Autor | Zpráva | ||
|---|---|---|---|
| veseláč Profil * |
#1 · Zasláno: 31. 3. 2008, 23:14:59
Dobrý den,
dělám e-shop a zjistil jsem, že je nepřehledné celou aplikaci narvat do jedné třídy, z jediného důvodu - soubor má víc než tisíc řádků a mě nebaví pořád scrollovat a hedat funkce. Chtěl bych teda tuto třídu rozdělit do více souborů, ale netuším, jak potom tyto soubory spojit v jedinou třídu. Příklad: Mám soubor eshop1.php a v něm deklarovanou třídu Ceshop1 dále soubor eshop2.php a v něm třídu Ceshop2 atakdále potřeboval bych teď v souboru eshop.php vytvořit třídu, která by zdědila všechny proměnné i metody ze souborů eshop1.php až eshop(n).php, abych k těmto metodám mohl přistupovat z jedné instance. Doufám, že existuje elegantnější metoda, než každé následující třídě zdědit minulou třídu až k souboru eshop.php (postupné dědění). Děkuji za případné odpovědi |
||
| Mastodont Profil |
#2 · Zasláno: 31. 3. 2008, 23:24:07 · Upravil/a: Mastodont
Mám soubor eshop1.php a v něm deklarovanou třídu Ceshop1
dále soubor eshop2.php a v něm třídu Ceshop2 atakdále Obávám se, že jste vůbec nepochopil, o čem je objektové programování. Třída má vyjadřovat nějakou celistvou entitu, nějaký uzavřený celek s jedinečnými charakteristikami. Aplikace složená ze tříd Aplikace1, Aplikace2 .. AplikaceN, to je unikát. Zkuste to normálně procedurálně, není nutné jít na všechno přes objekty. |
||
| veseláč Profil * |
#3 · Zasláno: 31. 3. 2008, 23:28:58
Nebo ještě jinak, v souboru eshop.php budu mít:
class Ceshp { a sem bych nějak potřeboval hodit obsah souboru eshop1.php, eshop2.php atakdále, ale include nefunguje } Nevíte, jak bych to provedl? Jeden soubor je strašně nepřehledný. |
||
| joe Profil |
#4 · Zasláno: 31. 3. 2008, 23:32:39 · Upravil/a: joe
Mastodont
V OOP je dědění tříd naprosto normální, to je také jedna z výhod OOP. To, že si veseláč rozdělí svou aplikaci na jednotlivé třídy, které využije, proč ne. veseláč Umím dědit třídy akorát v Jave :-) V PHP nevím jak se to provádí. |
||
| Jan Tvrdík Profil |
#5 · Zasláno: 31. 3. 2008, 23:49:18 · Upravil/a: Jan Tvrdík
joe
Podle toho, co veseláč napsal souhlasím s Mastodontem, tj, že veseláč nepochopil podstatu OOP. veseláč 1. PHP nepodporuje vícenásobné dělení (tj. dědění od více tříd zároveň) 2. Jeden soubor je strašně nepřehledný. – myslím, že 1000 řadků není zase tolik, viděl jsem i delší třídy – pokud je skutečně potřeba třídu rozdělit, tak je potřeba vrátit se k návrhu a vymyslet, jak to rozdělit tak, aby na sebe vše logicky navazovalo – více násobné dědění lze řešit pomocí skládání tj., že třída obsahuje vlastnost, která je objektem vkládané třídy – rozdělit kód jen kvůli délce nemá s OOP skutečně nic společného. Pokud to návrch nevyžaduje, tak bych určitě nechal vše v jednom souboru |
||
| joe Profil |
#6 · Zasláno: 31. 3. 2008, 23:58:40 · Upravil/a: joe
Jan Tvrdík
Pravda, jen vím že od toho OOP je a dál to neřeším. Nevím jestli teď nenapíšu nesmysly, ale proč to neudělat třeba následovně: class Trida {
require_once('nejake_spolecne_metody.php');
require_once('nejake_spolecne_metody2.php');
require_once('nejake_spolecne_metody3.php');
}Takto si to rozdělit, to by snad mělo fungovat nebo se pletu? EDIT: Tak to je škoda, že tohle nefunguje. Zatím se mi ale nestalo, abych musel třidy nějak rozdělovat, zase takový pisatel nejsem :) |
||
| Jan Tvrdík Profil |
#7 · Zasláno: 1. 4. 2008, 00:00:56
joe
AFAIK to fungovat nebude a skončí na chybě. |
||
| Mastodont Profil |
#8 · Zasláno: 1. 4. 2008, 00:07:30
|
||
| BetaCam Profil |
#9 · Zasláno: 1. 4. 2008, 00:34:27
veseláč
Kravina buď si udělej pořádnej návrh a nebo se vykašli na OOP. Pokud neznáš základní věci tak se do toho nepouštej, protože to bude katastrofa. joe V OOP je dědění tříd naprosto normální, to je také jedna z výhod OOP. To, že si veseláč rozdělí svou aplikaci na jednotlivé třídy, které využije, proč ne. Existuje takové pořekadlo když už nevíš a vypotřeboval si všechny možnosti jak to udělat použij dědění. Dědění je super věc, ale také dost svazuje. Ve většině případů je lepší třídy složit. Většina lidí co dnes začíná s OOP seká dědění úplně všude a pak sou vidět takové přírodní úkazy jako že: VIEW dědí DBLayer VIEW dědí USER dědí LOGIN dědí DBLayer Když vidim takovéhle dědění tak si rvu vlasy i když žádné nemám. |
||
| Mastodont Profil |
#10 · Zasláno: 1. 4. 2008, 10:03:16
VIEW dědí USER dědí LOGIN dědí DBLayer
To bych hrozně rád viděl taky! |
||
| BetaCam Profil |
#11 · Zasláno: 1. 4. 2008, 15:13:28
Mastodont
Ono dnes hodně začátečníků má takovejhle přístup : Problém : Potřebuji doma rohlík Řešení : Postavím si doma na zahradě celou pekárnu, protože z té rohlík dostanu. ale už je většinou nenapadne, že by si ten rohlík mohli jen dojít koupit do pekárny. |
||
| veseláč Profil * |
#12 · Zasláno: 1. 4. 2008, 23:15:48
Tak tuto metaforu jsem jaksi nepochopil, to máte z Dr. House? :))
|
||
| joe Profil |
#13 · Zasláno: 2. 4. 2008, 00:56:56
BetaCam
Tak odkud si je pak rveš? :-) Já nedědím, ještě jsem se k tomu nedostal a nepotřeboval k ničemu, naštěstí :-) |
||
| dajusa Profil |
#14 · Zasláno: 2. 4. 2008, 09:10:58 · Upravil/a: dajusa
BetaCam
Plně souhlasím. Hodně lidí nepřemýšlí. Proč dělat věci jednoduše když to jde složitě, že? veseláč zjistil jsem že je nepřehledné dávat vše do jednoho souboru tak to napiš tak ať je to přehledné soubor má víc než tisíc řádků Víc než tisíc řádků?? já mám třídu o 2764 řádcích...a myslím že je to jednodušší mít to v jednom souboru, protože když si chci vyhledat bějakou funkci tak radši vyscroluju pár řádků nahoru, než abych si musel pamatovat ve kterém z n souborů je zrovna daná funkce. |
||
|
Časová prodleva: 18 let
|
|||
0