fatbat — 2012-02-03T06:00:27-05:00 — #1
I'm using a tree data structure in PHP. The structure is similar to this;
- I have a 'book' object that has properties like 'title' and 'author' and a property called 'chapters'. This is an array of 'chapter' objects.
- Each 'chapter' object has a properties like 'chapter number' and a property called 'pages' - an array of page objects.
- Each page object contains a property called 'text' which is the text to display on the page, and method called as_html that generates the text as an html fragment.
To print out the book, I'd have a method in the book object called 'print' which would do something like;
foreach($this->chapters as $chapter)
foreach($chapter->pages as $page)
So, could anyone tell me whether it is possible for a method in a page object to access the properties of the book to which it belongs? I'm hoping to be able to put something in the as_html method to, for example, insert the title of the book and the author.
Any help gratefully received!
jv1 — 2012-02-03T10:40:33-05:00 — #2
It is difficult to say without seeing your classes for Book, Chapter, and Page. It seems like you have three different classes, one for each element of your book, right?
fatbat — 2012-02-03T11:53:05-05:00 — #3
Yes, that's right. I have classes called Book, Chapter and Page.
A Book contains an array of several Chapter objects, and each Chapter object could contain several Page objects.
My view at the moment is that the Chapter class needs a property called parent_book and when the Chapter is instantiated, this property is set to be a reference to the Book object. Likewise, a Page has a property called parent_chapter. Then I might be able to do something like this inside a particular Page object;
to get the book title. Just seems a bit messy.
jv1 — 2012-02-03T12:06:18-05:00 — #4
doing it that way isn't that big an issue as long as you pass the objects by reference and aren't cloning them