o ana yöntemleri inherents nasıl dynamicly yüzden onun tipi değişiklikleri bir sınıfını genişleten bir fabrika oluşturmak ama

1 Cevap php

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.

1 Cevap

PHP yansıma API emin değil im bunun bir örneğini oluşturarak sonra yapıyor hakkında gitmek ve nasıl, orada yeni bir sınıf ayıklamak ve inşa etmek gerekir ama yöntemleri vardır kontrol edin. Oldukça emin im bu alaycı PHPUnit çalıştığını çünkü nasıl olsa olası biliyorum. Siz aynı zamanda bazı fikirler almak için PHPUnit çeşitli Mock nesne ile ilgili derslere bakmak isteyebilirsiniz.

Yani aslında yöntemleri aşırı yük / ekleyerek sürece, neden sen bile bunu yapmak istiyor söyledi? Neden sadece nesnenin bir özelliği kullanmak veya bir arabirim kullanmak değil mi? Nedir burada amaç?