Autor | Zpráva | ||
---|---|---|---|
monarcha Profil |
#1 · Zasláno: 9. 3. 2007, 12:10:40
ahoj všem. Mám třídu, např. trida1.class.php, která vypadá nějak takto:
a dále třídu 2, ve které si v poli ukládám instane třídy 1:
v hlavním programu si naplním zásobník a někde jinde trochu změnit proměnou v instanci třídy tr1. To mi ale nefunguje:
Poradí mi někdo, čím by to mohlo být? Dík, Lukáš |
||
Ronnie Profil |
#2 · Zasláno: 9. 3. 2007, 12:21:15 · Upravil/a: Ronnie
Metoda pridejTr1() je napsána zcela chybně, správně by to mělo být
Předchozí příklad nenaplňuje atribut $zásobník. |
||
one_k Profil |
#3 · Zasláno: 9. 3. 2007, 12:24:48
mas to cele spatne nastuduj si neco o OOP.
http://cz.php.net/manual/cs/language.oop.php |
||
monarcha Profil |
#4 · Zasláno: 9. 3. 2007, 13:12:35
Ronnie určitě je to takhle lepší, ten kód tam byl asi jako nějake zbytek pokusů. Po zavolání print_r($zasobnik) v hlavním programu se ale vypíše naprosto to samé. Já si spíš myslím, že problém bude někde ve funkci getTr1.
Po zavolání $a=$zasobnik->getTr1(0); $a->setAttribute(...); print_r($a); program vypíše to, co bych čekal, ale print_r($zasobnik) vypíše původní hodnoty. Řekl bych, že to bude něco s předáváním ukazatele/hodnoty ve funkci getTr1...ale to je spíš otázka. one_k http://cz.php.net/manual/cs/language.oop.php jsem si tak zběžně pročetl, ale že bych to měl celé špatně, to se mi nezdálo. S OOP začínám, to je pravda. Ale myslím, že struktura tříd a vytvoření jejich instancí tam mám (alespoň podle mého názoru) správně a špatně mám jenom obsah funkcí, což jsou v uvedeném příkladu asi 4 řádky, na které se pávě ptám. |
||
one_k Profil |
#5 · Zasláno: 9. 3. 2007, 14:19:06
monarcha
Cely tvuj priklad nechapu. Je to mozna tim ze je patek, ale pripada mi ze se snazis o neco naprosto zbytecneho. Proc misto $a->setAttribute(); nevolas $tr1->setAttribute()? Z jakeho duvodu potrebujes mit zasobnik(pole) s instancemi? |
||
monarcha Profil |
#6 · Zasláno: 9. 3. 2007, 14:50:00
one_k
je to čistě testovací příklad, který by šel použít třeba u košíku v e-shopu. tr1 by pak bylo zboží, tr2 nákupní košík, který obsahuje několik položek. $tr1 pak nechci volat proto, že to nemusím mít k dispozici (například proto, že by se mohl obsah košíku načítat ze session) |
||
one_k Profil |
#7 · Zasláno: 9. 3. 2007, 15:02:55
aha. Vazne si to OOP prostuduj.
V tom tvem prikladu si vytvaris instanci tridy Trida1 a predavas ji Tride2 pak volas metodu Tridy2, ktera ti vraci instanci Tridy1. IMHO to je blbost. Pak tam mas zbytecne 2 totozne instance. Timto zpusobem zapisu(co uvadis) budes mit $tr1 vzdy k dispozici(pokud neprovedes unset nebo destruct). |
||
monarcha Profil |
#8 · Zasláno: 9. 3. 2007, 15:25:51 · Upravil/a: monarcha
takže return ($this->zasobnik[$i]) vytvoří novou instanci třídy a tu vrátí? A lze předat něco jako ukazatel a nevytvářet novou instanci?
|
||
one_k Profil |
#9 · Zasláno: 9. 3. 2007, 15:31:12
ne.
ten return ji nevytvori. Ty ji vytvoris a pak ji predas Tride 2 a tou funkci si ji vracis. Lze predat ukazatel &$tr1 |
||
monarcha Profil |
#10 · Zasláno: 9. 3. 2007, 17:27:57
ok. Dík za tvůj čas
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0