X-Git-Url: https://git.decadent.org.uk/gitweb/?p=maypole.git;a=blobdiff_plain;f=lib%2FMaypole%2FManual%2FInheritance.pod;fp=lib%2FMaypole%2FManual%2FInheritance.pod;h=950283deb960c2610032c34d5e2112425af1bd98;hp=bff339db3bd467b82f5cf6c59d90c3df1c573026;hb=fadcae3ffddebaa38da172f9624cc60176d80b33;hpb=d813b3413bbd58789200c2ef02c7386e33cabe00 diff --git a/lib/Maypole/Manual/Inheritance.pod b/lib/Maypole/Manual/Inheritance.pod index bff339d..950283d 100644 --- a/lib/Maypole/Manual/Inheritance.pod +++ b/lib/Maypole/Manual/Inheritance.pod @@ -33,8 +33,8 @@ application. =head1 Structure of a standard Maypole application A minimal Maypole application (such as the Beer database example from the -L synopsis) consists of a custom driver class (BeerDB.pm), a set of -auto-generated model classes, and a view class: +L synopsis) consists of a custom driver (or controller) class (BeerDB.pm), +a set of auto-generated model classes, and a view class: THE DRIVER @@ -76,6 +76,11 @@ auto-generated model classes, and a view class: pub(); BeerDB::Style beer(); beers(); +=head2 Ouch, that's a lot of inheritence! + +Yes, that's a lot of inheritence, at some point in the future - probably Maypole 3.x we +will move to Class::C3 + =head2 What about Maypole::Application - loading plugins The main job of L is to insert the plugins into the @@ -107,7 +112,7 @@ L identifies the appropriate L subclass and inserts it into each of these table classes' C<@ISA> ( C<< Class::DBI:: >> in the diagrams).. -Next, C B L onto the C<@ISA> +Next, C B L onto the C<@ISA> array of each of these classes. Finally, the relationships among these tables are set up. Either do this @@ -184,7 +189,7 @@ C, you would write: 1; From Maypole 2.11, this package will be loaded automatically during C, -and C is B onto it's C<@ISA>. +and C is B onto it's C<@ISA>. Configure relationships either in the individual C classes, or else all together in C itself i.e. not in the Maypole model. This @@ -234,8 +239,8 @@ The resulting model looks like this: the Maypole application, and need not know it exists at all. 2. Methods defined in the Maypole table classes, override methods defined in the -Offline table classes, because C was unshifted onto the -beginning of each Maypole table class's C<@ISA>. Perl's depth first, +Offline table classes, because C was pushed onto the +end of each Maypole table class's C<@ISA>. Perl's depth first, left-to-right method lookup from e.g. C starts in C, then C, C, C, and C, before moving on to