Sen zamanında bir sınıf genişletmek olamaz. Farklı iki türüne bir örnek değişkeni kullanın veya bir factory kullanın.
Örnek değişkeni için örnek:
class Types() {
private $type;
public function __construct($type) {
$this->type = $type;
}
public function activate() {
if($this->$type == 1) {
// do this
}
else if($this->type == 2) {
// do that
}
}
}
Fabrika desen için örnek:
abstract class BaseClass {
// Force Extending class to define this method
abstract public function activate();
// Common method
public function printOut() {
echo "Hello World";
}
}
class Type1 extends BaseClass {
public function activate() {
// do something
}
}
class Type2 extends BaseClass {
public function activate() {
// do something else
}
}
class TypeFactory {
public static function getType($tpye) {
if($type == 1) {
return new Type1();
}
else if($type == 2) {
return new Type2();
}
}
}
o zaman yapın:
$obj = TypeFactory::getType($1);
$obj->activate();
Update:
PHP 5.3 'ten beri kullanabilirsiniz anonymous functions. Belki bu yararlanabilirler.