Look correct from my point of view...
class Portfolio { var $portfolioID ; var $albums = array () ;
function Portfolio ( $newID ) { $this->portfolioID = $newID ; } function addAlbum ( $album ) { $this->albums[] = $album ; } function getAlbum () { return current ( $this->album ) ; } .... }
some knowlege on the iterator pattern is required though.... But you could even use a stack ( which i prefer )
class main { var $stack = NULL ;
function create ( $ID ) { $this->stack = new stack ( $ID , $this->stack ); } function remove ( $ID ) { $this->stack = $this->stack->remove(); } function getID () { return $this->stack->getID(); } }
class stack { var $ID ; var $prev = NULL ;
function stack ( $ID , $prev ) { $this->ID = $ID ; $this->prev = $prev ; } function getID () { return $this->ID ; } function remove () { return $this->prev ; } }
$foo = new main(); $foo->create( 100 ); $foo->create( 200 ); echo $foo->getID(); // 200 $foo->remove(); $foo->create( 300 ); echo $foo->getID(); // 300 $foo->remove(); echo $foo->getID(); // 100 $foo->remove();
unset ( $foo );
[...]
from what you wrote it seems that only the type of display is similar in both classes. I don't think this is enough to extend them from the same base class because the class properties and update/insert/load methods will be different in each.
You have more of a 'is part of' relationship here. So I'd suggest something like this (simplified):
class Portfolio { var $portfolioID; var $albums = array(); }
class Album { var $albumID; var $portfolioID; var $photos = array(); }
class Photo { var $photoID; var $albumID; var $name; }
[...]
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php