Ne yapmak istiyorsunuz bunu niteliklerin bir dizi vermek ve bilinen bir sınıfını genişleten önceden bildirilmemiş sınıfın bir nesnesi döndüren statik bir fabrika bir fonksiyonu yoktur.
Temelde:
<?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
}
böylece ben kod yazarsanız:
<?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";
}
Ben olsun: [edit]
bar Object
(
[a] => 17
)
is a Foo
moo Object
(
[a] => 5
)
is a Foo
Ama nerede bunu yapmak için gerekli komutlar için aramaya başlamak için bilmiyorum. Benim fabrika işlevi ben nasılsa $ isim değeri dolarlık yeni bir ad oluşturur, sonra ana sınıfını genişletir ancak kendisine herhangi bir değişiklik yapar beyan gerektiğini düşünüyorum. Bu şekilde o ana sınıfının tüm işlevselliği, sadece bir farklı türü vardır.