NAME
Class::MakeMethods::Template::ClassVar - Static methods with subclass variation
SYNOPSIS
package MyObject;
use Class::MakeMethods::Template::ClassVar (
scalar => [ 'foo' ]
);
package main;
MyObject->foo('bar')
print MyObject->foo();
$MyObject::foo = 'bazillion';
print MyObject->foo();
DESCRIPTION
These meta-methods provide access to package (class global) variables, with the package determined at run-time.
This is basically the same as the PackageVar meta-methods, except that PackageVar methods find the named variable in the package that defines the method, while ClassVar methods use the package the object is blessed into. As a result, subclasses will each store a distinct value for a ClassVar method, but will share the same value for a PackageVar or Static method.
Common Parameters: The following parameters are defined for ClassVar meta-methods.
- variable
-
The name of the variable to store the value in. Defaults to the same name as the method.
scalar
Creates methods to handle a scalar variable in the package of an instance.
See the documentation on Generic:scalar
for interfaces and behaviors.
array
Creates methods to handle a array variable in the package of an instance.
See the documentation on Generic:array
for interfaces and behaviors.
hash
Creates methods to handle a hash variable in the package of an instance.
See the documentation on Generic:hash
for interfaces and behaviors.
vars
This rewrite rule converts package variable names into ClassVar methods of the equivalent data type.
Here's an example declaration:
package MyClass;
use Class::MakeMethods::Template::ClassVar (
vars => '$VERSION @ISA'
);
MyClass now has methods that get and set the contents of its $MyClass::VERSION and @MyClass::ISA package variables:
MyClass->VERSION( 2.4 );
MyClass->push_ISA( 'Exporter' );
Subclasses can use these methods to adjust their own variables:
package MySubclass;
MySubclass->MyClass::push_ISA( 'MyClass' );
MySubclass->VERSION( 1.0 );