| 
	
 | 
 Posted by Markus Ernst on 09/08/05 17:01 
Jerry Stuckle wrote: 
 
[...] 
 
> But herein lies the problem.  Inheritance is not applicable here.  A 
> text element is not a "type of" a page.  Rather, a page "contains" one 
> or more text elements. 
> 
> A biography is a "type of" a book, so it would be applicable to derive 
> biography from book.  The book also "has an" author, but the author is 
> not a "type of" text element (or vice versa). 
 
[...] 
 
Thank you for your detailled and understandable example! If I understand  
everything correctly, my problem is rather to make myself understandable (I  
am not a native English speaker and not an educated IT professional either,  
so I may have chosen the wrong words and also poor or too much simplified  
examples). I did the following classes (each of which has a corresponding  
MySQL table): 
 
entity -> rubric -> page [1] 
entity -> contents element (such as text or picture or text and picture...) 
entity -> product category 
entity -> product -> book 
entity -> product -> cd 
entity -> product -> postcard 
entity -> author 
.... 
 
The main properties of entity are id, parent, active/inactive and sort  
order. So for all kinds of common tasks - handle sort order,  
activate/deactivate display... - I have one method at entity level, and I  
can flexibly handle all kinds of 1:n relations at entity level by assigning  
the id value of one object to the parent value of another one, regardless of  
what type the objects are of. 
So I can assign a page not only to a rubric (which is the natural container  
for pages), but also for example to an author. Or assign a text element not  
only to a page (which is the natural container for text elements), but also  
to an author. Like that I can reduce the author data record to the very  
basic - name, picture, contact information... - and still freely add  
additional info where appropriate. 
Of course n:m relations such as the product/author relation are handled  
separately. 
 
[1] I assume that the rubric -> page inheritance in my example (and the  
wrong book -> page example in my original posting) made the impression that  
I used inheritance for every kind of relations. Though it is true that a  
page is not a type of a rubric, this seemed useful to me as below a parent  
rubric there can be pages and sub-rubrics mixed. Thus specially the sort  
order handling and menu composition would be very complicated if pages and  
rubrics were handled separately. 
 
 
My original question was about how to include the methods needed for  
administration only in order to reduce server load at the front end.  
Actually entity inherited a class with lots of admin methods: 
 
common functions -> entity -> ... 
 
And also every class contains specialized admin functions; for example in  
the postcard class the method delete_postcard() will delete the postcard  
record and then call $this->delete_product(), which will delete the product  
record and call $this->delete_entity(). 
 
So now I separated the admin methods into separate classes that are not  
inherited but only called when they are needed. 
 
Markus
 
  
Navigation:
[Reply to this message] 
 |