Chapter 12. Custom Mason Subclasses
Something that we have tried very hard to do beginning with the 1.10
release of Mason is to make it easier to customize
Mason’s behavior. Jon Swartz was already on this
track even back with the release of 0.80, which saw the first
appearance of the HTML::Mason::Resolver classes,
but 1.10 tries to bring this to new levels.
Starting with 1.10 it has become possible to subclass almost every core class that comes with Mason. Some obvious candidates for subclassing include the Lexer, Compiler, and Resolver. This chapter will demonstrate how you might go about implementing subclasses of various Mason objects.
Class::Container as a Superclass
A number of modules in Mason are subclasses of
Class::Container. This is a class that was created
to encapsulate some common behaviors for Mason objects. Originally,
it was called HTML::Mason::Container, but Ken
Williams decided to package this class separately and release it to
CPAN, as it solves some fundamental problems of a large
object-oriented system. Any Mason object that takes parameters to its
constructor must inherit from this module. Of
course, since all of the classes that you might consider subclassing
inherit from Class::Container already, you
shouldn’t need to inherit from it directly. However,
you may need to use some of its methods. We will briefly cover a few
of them here, but see the Class::Container
documentation for more details.
The modules in the Mason core distribution that are
Class::Container ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access