Autor Zpráva
Seith
Profil *
Ahoj všem,

začal jsem pracovat na jednom projektu v PHP a dal jsem si za cíl, že se pokusím využít OOP. Zrovna teď jsem se zasekl na jedné věci a snažím se vymyslet nejlepší řešení. Nastíním vám, co mám na mysli. Mám několik tříd, které mají za cíl řešit dílčí problémy, jenže také potřebuji jednu třídu, která bude obsahovat vše, co obsahují třídy dílčí. V tomto případě by se nejlépe hodilo dědit, avšak problémem je, že nelze definovat více rodičů. Nenapadá někoho, jak toto jednoduše a hlavně elegantně vyřešit?

Předem díky za odpovědi
joe
Profil
Seith:
jenže také potřebuji jednu třídu, která bude obsahovat vše, co obsahují třídy dílčí

A to z jakého důvodu? Proč nemůžeš mít v té třídě jen uložené instance těch tříd a přes ně se dostat k těm metodám, co chceš využít?
Nebo blíže popiš o jaké třídy jde, aby se to dalo lépe pochopit, proč to chceš tak, jak píšeš.
marcus33cz
Profil
potřebuji jednu třídu, která bude obsahovat vše, co obsahují třídy dílčí
Asi budeš muset ukázat, co přesně chceš. V PHP samozřejmě jsou abstraktní třídy, ale vůbec nechápu, proč chceš vytvořit "velkou" třídu, která by dědila od dílčích tříd.

1) takovou třídu na 99 % nepotřebuješ
2) odporuje to jakýmkoliv zásadám objektového programování

V tomto případě by se nejlépe hodilo dědit
No to by se vážně nejlépe nehodilo...
Seith
Profil *
Ok, nastíním lépe

Jedná se o systém, který zpracovává šablony. Mám třídu Loop, která uchovává data pro smyčky a umí vytvořit vnořenou smyčku, tj. uchovává si odkaz na další instanci Loop. Jenže takhle mám také podmínky (třída Cond) a další věci. Pak mám "hlavní" třídu, ze které vytvářím jednu instanci pro každou šablonu. Jenže tato hlavní třída musí také umět vytvořit smyčku, podmínku atd...

uvedu malý příklad:
$template = new CTemplate('soubor');
$smycka = $template->NewLoop('smycka');
$vnorenaSmycka = $smycky->NewLoop('vnorenaSmycka');

v příkladu jsem neuváděl vkládání dat a práci se smyčkou, jde jen o princip.

Doufám, že to pomůže k porozumnění toho, co mám na mysli.
Díky
Seith
Profil *
v příkladu na řádku 3 jsem se překlepl
$vnorenaSmycka = $smycka->NewLoop('vnorenaSmycka');

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:

0