我想做的是有一个静态工厂函数,你可以给它一系列属性,它返回一个对象,该对象是一个以前未声明的类,它扩展了一个已知的类。
基本上:
<?php
class foo {
public $a;
function increment($b = 1){
$this->a += $b;
}
}
function factory($name, $a){
//returns an object of class $name that extends foo with $this->a set to $a
}
所以如果我写代码:
<?php
$bar = factory("bar",12);
$bar->increment(5);
print_r($bar);
if(is_a($bar, "foo")){
echo "is a Foo";
}
$moo = factory("moo", 4);
$moo->increment();
print_r($moo);
if(is_a($moo, "foo")){
echo "is a Foo";
}
我得到:[编辑]
bar Object
(
[a] => 17
)
is a Foo
moo Object
(
[a] => 5
)
is a Foo
但我不知道从哪里开始寻找执行此操作所需的命令。我认为在我的工厂函数中,我需要以某种方式声明 $name 的值扩展了父类但不对其进行任何更改,然后构造一个新的 $name。这样它就具有父类的所有功能,只是类型不同。