責任転嫁

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でやりたいのですが、
微妙なところを色々と理解出来ていないので。。。