責任転嫁
use strict; package Delegater; our $AUTOLOAD; sub new { my ($class, $object) = @_; my $self = bless \$object, $class; return $self; } sub AUTOLOAD { my $self = shift; return if $AUTOLOAD =~ /::DESTROY$/; my $rex = sprintf '^%s::', ref $self; $AUTOLOAD =~ s/$rex//; return $$self->$AUTOLOAD(@_); } package Class; our $AUTOLOAD; sub new { return bless {}, shift; } sub AUTOLOAD { my $self = shift; return if $AUTOLOAD =~ /::DESTROY$/; return sprintf '%s(%s)', $AUTOLOAD, join ',', @_; } package main; my $obj = new Class; $obj = new Delegater($obj); print $obj->method(1,2);
というようなことをPHPでやりたいのですが、
微妙なところを色々と理解出来ていないので。。。