find
- added
'find'
function to Class::Maker::Reflection
find (Returns a snapshot-aref to all instances (objects) of a class in a
given
package
)
0.05_06 21.07.2002 00:35
- class field
'default'
is working now
#!perl
Class::Maker::class
{
isa
=> [
qw( Something )
],
public
=>
{
string
=> [
qw( name desc )
],
},
default
=>
{
name
=>
'Role Name'
,
desc
=>
'Role Descrition'
,
xxx
=>
'DEFAULTS TO XXX'
,
},
};
my
$role
= Human::Role->new( );
__END__
Even we called an empty 'new' we got
$role->name eq 'Role Name'
$role->desc eq 'Role Description'
and
Something->xxx( 'DEFAULTS TO XXX' ) is called
which may be an accessor or a function/method that does anything.
- Class::Maker::Reflection::reflect() now returns all reflections of the
@ISA classes as a href. This will be a ie. "Class::Maker::Reflex" object in future.
Also it better sync's the ->{isa} class fields with the real @ISA.
Additionally non Class::Maker classes can be introspected, so they will have at least information
in the 'isa' and 'methods' fields.
{
package Human::Role::Simple;
@ISA = qw(Human::Role);
sub new : method
{
my $this = shift;
return $this->SUPER::new( name => $_[0] );
}
}
$reflex =
(
'Human::Role::Simple' =>
{
'isa' => [ 'Human::Role' ],
'methods' => [ 'new' ].
}
)
0.05_09 27.07.2002 10:40
- attribute handlers (accessors) are now in
"Class::Maker::Basic::Handler::Attributes"
. Therefore
if
new accessors types are into that
package
(see _make_method in Maker.pm).
-
'attribute'
field is now obsolete ! Now only private/public/protected are allowed.
0.05_10 01.09.2002 16:14
$new_obj
= Pkg::Name->new(
name
=>
'name'
,
=>
'email@server.org'
);
$clone_obj
=
$new_obj
->new(
name
=>
'othername'
);
0.05_12 29.9.2002 18:53
0.5.14
- Class::Maker::Exception added. See pod.
0.5.15
-- now handlers are using
"Delegation"
to methods
- get()
- set()
- init() called from
'new'
(or
'default'
field) constructor
-
reset
()
This now eases the interception via hooks and also makes things more transparent.
Example exploit of that:
foreach
my
$method
(
qw(max text)
)
{
Hook::Heckle->new(
victim
=>
$method
,
post
=>
sub
{
my
$this
=
shift
;
"Model is informing observers of '$method' change\n"
and
$_
[0]->notify_observers(
'update'
,
$method
)
if
$_
[1];
@_
},
sub
{
@_
} );
}
* class->_arginit (
if
exists
) is called
before
anything
with
@_
happens to the constructor (
'new'
).
-- it received \
@_
and should
do
changes in place.
0.5.17
* Bug in lvalue attribute handler (
default
) fixed
because C<
return
$val
; this doesn
't work, don'
t
say
"return"
>
* Class::Maker::Types::Array, t/20_10_...
fixed bug in _calc( ) which caused wrong calculation of intersection()
when
identical/copy array elements were present in an array.
Solved
' by unique'
ing all elements prior calculation.
amended get_where_regexp(). Now supports more flexible arguments: call methods
with
args.
* Documented a feature where ^[.|*] in the class name creates a subpackage but code functionality was not existant. Re-introduced that feature.
0.5.97 * new( "Parent::method" => 100 ) is now working again. It checks for '::' pieces and forwards them now correctly as implemented in the Basic/Constructor.pm.
*
$Class::Maker::explicit
is now working again. Now should be not
defined
on a class-basis, but globally (as early as possible). You may have a look
at t/30_explicit.t
for
an example of the syntax. You cannot
use
the explicit notation in the basic new() constructor anymore, as it produces over-explicit names
in the
$this
hash. This could be handled by testing it, but seems not feasible yet.
* new( ) is now handling the
default
=> { } definitions more precise, so it inits them according to inheritance series, so that all parents
default
definitions are
applied,
while
the children
override
the defaults of their parents. Notably, the
default
values
are already accessible in the _preinit standard method.