class cl_Item
{
var Id = 0;
var Name = '';
var Owner = 'null';
var Prev_Item = 'null';
var Next_Item = 'null';
var Value;
function cl_Item($AId, $AName, $AOwner, $APrev_Item, $ANext_Item, $AValue)
{
$this->Id = $AId;
$this->Name = $AName;
$this->Owner =& $AOwner;
$this->Prev_Item =& $APrev_Item;
$this->Next_Item =& $ANext_Item;
$this->Value = $AValue;
}
}
class cl_List extend cl_Item
{
var Items = Array();
var Selected;
var LCount = 0;
function cl_List($AName, $AValue)
{
parent::cl_Item(0, $AName, 'null', 'null', 'null', $AValue);
}
function AddItem($AItem)
{
Items[] = $AItem;
LCount = count($Items);
}
}
Adott a fenti két osztálydefiníció, láncolt listákat szeretnék velük kezelni.
A lista elemeit a cl_List osztály Items tömbje tárolná. A listaelemek minden esetben a cl_Item v. annak származtatott osztályának egy objektuma. Gyakorlatilag előre nem tudom milyen osztályhoz fog az elem tartozni.
Elem hozzáadását a cl_List osztály AddItem metódusával szeretném megoldani, de jelen állapotban -még az sem biztos, hogy így mükszik - szerintem két objektum jön létre.
Az első akkor mikor meghivom pl. így az AddItem metódust:
AddItem(new cl_Item(0,'A',null,null,null,null);
A másik mikor ezen metóduson belül hozzáadom az Items tömbhöz akkor ott egy másolat jön létre.
Megoldható ez vhogy úgy, hogy csak az Items tömbben jöjjön létre belőle egy példány?
Bocs ha láma a kérdés, kezdő vok :)
- 1676 megtekintés
Hozzászólások
Ahhoz, hogy garantáltan 1 Items tulajdonságod legyen osztályszíntü változóra van szükséged -> static-nak kell deklarálni.
Ez csak 5-ös phpban működik. Az álltalad írt 4es php kód és többszörösen elavult.
A fő kérdés: ha eleve berakod egy tömbbe, minek a láncolt lista??? A tömböt sokkal kényelmesebben be tudod járni/rendezni akár mint egy listát. Ez az egész olyan jó pascalos :) de teljesen felesleges.
- A hozzászóláshoz be kell jelentkezni
Rátapintottál a lényegre, csak pascalt ismerek :)
A tömböt kényelmesen kezelhetem, de itt a cl_List-nek is lehet cl_List eleme, valamint a feltöltést is egyszerübben meg tudom oldani a cl_List, vagy egy leszármazott saját metódusával. Ahova meg fel fog kerülni, egyenlőre csak 4-es php van.
- A hozzászóláshoz be kell jelentkezni