függvény referenciát ad vissza, de miért?
Sziasztok!
Próbálom dióhélyban vázolni a problémám. A teljes kódot nem copyzom be, mert az osztályok implementációja több100 sor.
Van egy saját osztályom, DataTable néven és egy Adapter néven.
1. //konstruktorban generál (feltölt) egy tömböt különböző értékekkel, amit beállít a DataTable típusú $adapter->dataTable attribútum értékének
2. //kiírja a tartalmát korrekten, az 1. sorban létrehozott DataTable objectnek, az osztályban a __toString()-ben mondom meg, hogy hogy írja ki.
3. //visszaadja a DataTable típusú objectet, az $adapter példány $dataTable attribútumát ($adapter->dataTable). Ezt eltárolom a $table változóba.
4. //A szintén DataTable típusú $table változónak megváltoztatom a $Row attribútumának értékét.
5. //megint kiírja a tartalmát. Azt várnám, hogy ugyanazt írja ki, mint az előbbi kiiratásnál, hiszen nem az $adapter->dataTable->Row értékét változtattam, hanem a $table->Row attribútumának értékét. Azonban a kiiratás a megváltozott Row attribútummal írja ki a táblát. De miért? Ezt csak akkor tudnám elképzelni, hogy ha az $adapter->GetData() függvény referenciaként adná vissza a $dataTable attribútumát. De egy darab & sem szerepel a GetData függvényben, nem akarom referenciaként visszaadni. Mit nézek el?
Remélem érthető. Köszi előre is.
Lev
■ Próbálom dióhélyban vázolni a problémám. A teljes kódot nem copyzom be, mert az osztályok implementációja több100 sor.
Van egy saját osztályom, DataTable néven és egy Adapter néven.
1. $adapter = new Adapter();
2. print $adapter->dataTable; 3. $table = $adapter->GetData();
4. $table->Row = "xyz";
5. print $adapter->dataTable;
2. print $adapter->dataTable; 3. $table = $adapter->GetData();
4. $table->Row = "xyz";
5. print $adapter->dataTable;
1. //konstruktorban generál (feltölt) egy tömböt különböző értékekkel, amit beállít a DataTable típusú $adapter->dataTable attribútum értékének
2. //kiírja a tartalmát korrekten, az 1. sorban létrehozott DataTable objectnek, az osztályban a __toString()-ben mondom meg, hogy hogy írja ki.
3. //visszaadja a DataTable típusú objectet, az $adapter példány $dataTable attribútumát ($adapter->dataTable). Ezt eltárolom a $table változóba.
4. //A szintén DataTable típusú $table változónak megváltoztatom a $Row attribútumának értékét.
5. //megint kiírja a tartalmát. Azt várnám, hogy ugyanazt írja ki, mint az előbbi kiiratásnál, hiszen nem az $adapter->dataTable->Row értékét változtattam, hanem a $table->Row attribútumának értékét. Azonban a kiiratás a megváltozott Row attribútummal írja ki a táblát. De miért? Ezt csak akkor tudnám elképzelni, hogy ha az $adapter->GetData() függvény referenciaként adná vissza a $dataTable attribútumát. De egy darab & sem szerepel a GetData függvényben, nem akarom referenciaként visszaadni. Mit nézek el?
Remélem érthető. Köszi előre is.
Lev
Feature
Ha le akarod másolni az objektumot, akkor http://www.php.net/manual/en/language.oop5.cloning.php