On Wed, Sep 22, 2010 at 5:35 AM, Daniel Kolbo <kolb0...@umn.edu> wrote:

> Hello PHPers,
>
> I have:
>
> class A {
>        ...code
> }
>
> class B extends A {
>        ...code
> }
>
> $a = new A();
>
> $b = new B();
>

after looking back over your situation, which looks strange, why not use
composition at this level,

// note untested, may have some syntax errors
class B
{
  private $a = null;

  public function __construct(A $a)
  {
     $this->a = $a;
  }

  public function swapA(A $a)
  {
    $this->a = $a;
  }

  // proxy any calls to A which you would like to appear transparent
  public function __call($method, array $args)
  {
    return call_user_func_array(array($this->a, $method), $args);
  }

  // note requires 5.3
  public function __callStatic($method, array $args)
  {
    return call_user_func_array(array($this->a, $method), $args);
  }
}

$a = new A();
$b = new B($a);
// some code ..
$anotherA = new A();
// some more code
$b->swapA($anotherA);

-nathan

Reply via email to