1

I've realized that there's no downcasting in php5. Is there a common pattern to achieve it?

tereško
  • 58,060
  • 25
  • 98
  • 150
cort
  • 1,088
  • 1
  • 11
  • 20

1 Answers1

1

You could set the derived class to take a BaseClass object as a parameter in the constructor, and then copy the properties from that:

class Base {
    var $x, $y;
}

class DerivedClass extends Base {
    function __construct($param) {
         $this->copyFromBase($param); // put some type-checking here...
    }

    function copyFromBase($base) {
        $this->x = $base->x;    // you could definitely use a more
        $this->y = $base->y;    // intelligent way to do this
    }
}

$b = new Base();
$b->x = 'X';
$b->y = 'Y';
$b = new Derived($b);
nickf
  • 537,072
  • 198
  • 649
  • 721