From 72b5df95c89968c061111bf9063a0e0ef31861f7 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Mon, 16 Feb 2004 07:26:46 +0000 Subject: [PATCH] * Documentation changes * Updated the copyright statement to reflect that Class::Modular is now separate git-svn-id: file:///srv/don_svn/class_modular/trunk@14 96c6a18b-02ce-0310-9fca-9eb62c757ba6 --- lib/Class/Modular.pm | 125 ++++++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 62 deletions(-) diff --git a/lib/Class/Modular.pm b/lib/Class/Modular.pm index 1b4a881..5611de9 100644 --- a/lib/Class/Modular.pm +++ b/lib/Class/Modular.pm @@ -1,7 +1,7 @@ -# This module is part of DA, Don Armstrong's Modules, and is released -# under the terms of the GPL version 2, or any later version. See the -# file README and COPYING for more information. Copyright 2003 by Don -# Armstrong . +# This file is part of Class::Modular and is released under the terms +# of the GPL version 2, or any later version at your option. See the +# file README and COPYING for more information. +# Copyright 2003, 2004 by Don Armstrong . # $Id$ package Class::Modular; @@ -16,7 +16,6 @@ Class::Modular -- Modular class generation superclass use base qw(Class::Modular); - =head1 DESCRIPTION Class::Modular is a superclass for generating modular classes, where @@ -28,6 +27,10 @@ functions. Less generic functions can be included or overridden without modifying the base classes. This allows for code to be more modular, and reduces code duplication. +It fills the middle ground between traditional class based OOP and +classless OOP. L and L are similar to +Class::Modular but less manic. + =head1 FUNCTIONS =cut @@ -49,15 +52,17 @@ our $AUTOLOAD; =head2 new - Title : new - Usage : $obj = Foo::Bar->new(); - Function: Creates a new Foo::Bar object - Returns : A new Foo::Bar object - Args : none. +=head3 Usage + + $obj = Foo::Bar->new(); + +=head3 Function + +Creates a new C object. - Aditional arguments can be passed to this creator, and they are - stored in $self->{_creation_args}. You can also override the new - method in your subclass. It's just provided here for completeness. +Aditional arguments can be passed to this creator, and they are stored +in C<$self->{_creation_args}>. You can also override the new method in +your subclass. It's just provided here for completeness. =cut @@ -98,22 +103,22 @@ sub _init { =head2 load - Title : load - Usage : $db->load('FOO::Subclass'); - Function: loads a Class::Modular subclass - Returns : nothing - Args : SCALAR subclass SCALAR options +=head3 Usage + + $db->load('FOO::Subclass'); - Loads the named subclass into this object if the named subclass has - not been loaded. +=head3 Function + +Loads the named subclass into this object if the named subclass has +not been loaded. - The options scalar is passed to $subclass::_methods when determining - which methods should be added using _addmethods. +The options scalar is passed to $subclass::_methods when determining +which methods should be added using _addmethods. - The subclasses _init method is called right after methods are loaded. +The subclasses _init method is called right after methods are loaded. - If debugging is enabled, will warn about loading already loaded - subclasses. +If debugging is enabled, will warn about loading already loaded +subclasses. =cut @@ -129,6 +134,7 @@ sub load($$;$) { eval { no strict 'refs'; eval "require $subclass" or die $@; + # Use subclass::METHODS if it exists [use constants METHODS => qw(foo)] $self->_addmethods($subclass,&{"${subclass}::_methods"}($self,$options)); &{"${subclass}::_init"}($self); }; @@ -142,17 +148,17 @@ sub load($$;$) { =head2 _addmethods - Title : _addmethods - Usage : $self->_addmethods() - Function: Adds the passed methods into the function table - Returns : - Args : ARRAY of methods +=head3 Usage + + $self->_addmethods($subclass,&{"${subclass}::_methods"}($self,$options)); + +=head3 Function - Given an array of methods, adds the methods into the _methodhash - calling table. +Given an array of methods, adds the methods into the _methodhash +calling table. - Methods that have previously been overridden by override are _NOT_ - overridden again. This may need to be adjusted in load. +Methods that have previously been overridden by override are _NOT_ +overridden again. This may need to be adjusted in load. =cut @@ -182,22 +188,21 @@ sub _addmethods($@) { =head2 override - Title : override - Usage : $obj->override('methodname', $code_ref) - Function: Overrides the method methodname and calls $code_ref instead. - Returns : TRUE on success, FALSE on failure. - Args : SCALAR method name - CODEREF function reference +=head3 Usage + + $obj->override('methodname', $code_ref) + +=head3 Function - Allows you to override utility functions that are called internally - to provide a different default function. +Allows you to override utility functions that are called internally to +provide a different default function. - It's superficially similar to _addmethods, which is called by load, - but it deals with code references, and requires the method name to be - known. +It's superficially similar to _addmethods, which is called by load, +but it deals with code references, and requires the method name to be +known. - Methods overridden here are _NOT_ overrideable in _addmethods. This - may need to be changed. +Methods overridden here are _NOT_ overrideable in _addmethods. This +may need to be changed. =cut @@ -210,19 +215,19 @@ sub override { =head2 clone - Title : clone - Usage : my $clone = $obj->clone - Function: Produces a clone of the Class::Modular object - Returns : - Args : +=head3 Usage + + my $clone = $obj->clone - Produces a clone of the object with duplicates of all data and/or new - connections as appropriate. +=head3 Function + +Produces a clone of the object with duplicates of all data and/or new +connections as appropriate. - Calls _clone on all loaded subclasses. +Calls _clone on all loaded subclasses. - Warns if debugging is on for classes which don't have a _clone - method. Dies on other errors. +Warns if debugging is on for classes which don't have a _clone method. +Dies on other errors. =cut @@ -364,11 +369,7 @@ sub DESTROY{ =head2 AUTOLOAD - Title : AUTOLOAD - Usage : Called by perl - Function: Calls child methods which have been installed into this handle - Returns : N/A - Args : N/A +=head3 Function The AUTOLOAD function is responsible for calling child methods which have been installed into the current Class::Modular handle. -- 2.39.2