Kezdőlap › Fórumok › Programozás › PHP bug !
- This topic has 10 hozzászólás, 4 résztvevő, and was last updated 20 years, 3 months telt el by
linuxforum.
-
SzerzőBejegyzés
-
2005-03-18-11:58 #2008174
Több napot szenvedtem, mire kiderült, hogy a lenti bug található a PHP-ben. Eddig minden verzióban hibás volt. (Csak 4-eseket próbáltam.)
Ha egy osztály elemváltozója is osztály, és ez utóbbi mûveletét használod, akkor referenciaváltozóvá válik …Kissé tanácstalan vagyok. Ha valakinek lenne ötlete, hogy hogyan lehet áthidalni, azaz hogyan tudnám a PHP-t megbízhatóan összetett struktúrák elkészítésére használni, azt megköszönném.
Ha valaki azt el tudná mondani, hogy mi lehet a bug oka, az is jól jönne. Ugyanis nem tudom, hol ütheti még fel a fejét … ? (Vagy én értelmezek félre vagy rontok el valamit?)
De ha bárki, bármi bíztatót tud szólni, már az is elég lenne! Több hónapos fejelsztés eredményeként állt elõ egy ennyire összetett kód. … Most dobjam ki? (Netán javaslat, megbízható objektum orientált plattformra?)
No, azt hiszem ennyi. Ha valaki még elõtte áll egy ilyennek, ne ágyazzon egymásba objektumokat.
🙁value=”;
}
function muvelet() { // Csak a mûvelet meghívása a fontos
$this->value=”; // Tetszõlege utasítás lehet, vagy akár semmi
}
}class Fo {
var $adat; // Adat osztályú értékkel fogjuk feltölteni.[code]
value=”;
}
function muvelet() { // Csak a mûvelet meghívása a fontos
$this->value=”; // Tetszõlege utasítás lehet, vagy akár semmi
}
}class Fo {
var $adat; // Adat osztályú értékkel fogjuk feltölteni.2005-03-18-14:35 #2008175Szerintem ezt a kerdest a weblabor.hu forumaban tedd fel, ott tutira tudnak ra valaszt adni. 🙂
Köszönöm!
2005-03-18-18:08 #2008176Szerintem nincs hiba, csak te gondolod.
A „$masolat=$fo; // Teljesen függetlennek kellene lennie” jól mûködik, ahogy kell, csak te nem ezt várod.
Ha a $fo egy sima alap változó (mondjuk int) akkor az2005-03-19-08:56 #2008177Ha viszont $fo egy objektum, akkor nem az értéke (értsd a teljes objektum és adatai) másolódik át, hanem az objektumra mutató MUTAT
2005-03-19-10:16 #2008178Még c++ -ban sem igaz, hogy az objektum másolása attól függ, használod-e egy metódusát, vagy sem.
Ki mondott ilyet?
2005-03-19-15:36 #2008179Elveszett az elõzõ – jól kidolgozott válaszom. 🙁
2005-03-19-19:04 #2008180Nos, azt eddig elfelejtettem írni, hogy én php 5.0.2-vel próbálkozok. Lehet, hogy ebben már másképp viselkednek ezek a dolgok (egyébként pont úgy, ahogy c++-ban).
Bár igaz, hogy c++-ban ezek objektumra mutató mutatók lennének, php-ban meg mittoduménhogyhívják… 🙂Minden esetre ha ezzel a php-val lefuttatom az általam feljebb írt progit, akkor ezt írja ki a képernyõre:
Code:object(Fo)#2 (1) { [„adat”]=> object(Adat)#1 (1) { [„value”]=> string(5) „adat1” } }
object(Fo)#2 (1) { [„adat”]=> object(Adat)#1 (1) { [„value”]=> string(5) „adat1” } }
object(Fo)#3 (1) { [„adat”]=> object(Adat)#1 (1) { [„value”]=> string(5) „adat1” } }
object(Fo)#5 (1) { [„adat”]=> object(Adat)#4 (1) { [„value”]=> string(5) „adat2” } }$fo->adat->muvelet(); után:
object(Fo)#2 (1) { [„adat”]=> object(Adat)#1 (1) { [„value”]=> string(7) „muvelet” } }
object(Fo)#2 (1) { [„adat”]=> object(Adat)#1 (1) { [„value”]=> string(7) „muvelet” } }
object(Fo)#3 (1) { [„adat”]=> object(Adat)#1 (1) { [„value”]=> string(7) „muvelet” } }
object(Fo)#5 (1) { [„adat”]=> object(Adat)#4 (1) { [„value”]=> string(5) „adat2” } }A sorok sorban a következõ objektumokat mutatják (ahogy a kódban is láthatod):
– $fo
– $masolat
– $masolat2
– $masolat3Ahogy látható az eredmény elsõ két sorában a object(Fo)#2 azt mutatja, hogy az kukkra ugyan az az ojektum, ahogy vártuk ( vártam 😉 ).
A harmadik sornál látszik (object(Fo)#3), hogy az már egy új objektum, de az is látszik, hogy az ‘adat’ adattagja még ugyan az, mint az elsõ kettõé (object(Adat)#1).2005-03-20-00:06 #2008181Késõ van, próbálok csak kis lépéseket tenni.
PHP5-ben az eredeti, általam adott kód lefutása után a ‘hibás’ szöveg jelenik meg. Ugye?2005-03-20-12:18 #2008182Nos php 5.0.2-nél az eredeti programodat futtatva tök mindegy melyik „->muvelet()” sort teszem megjegyzésbe, egyiket, másikat, egyet sem vagy akár mindkettõt. Mindig azt írja, hogy ‘hibás’.
2005-03-21-16:30 #2008183 -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz