Tamam ben bir dize var ...
$a_string = "Product";
ve ben böyle bir nesneye bir çağrı bu dizeyi kullanmak istiyorsanız:
$this->$a_string->some_function();
Nasıl Dickens'ın dinamik o nesneyi diyorsunuz?
(Php 5 aklında Im sanmıyorum)
Yani kullanmak istediğiniz kod olacaktır:
$a_string = "Product";
$this->$a_string->some_function();
Bu kod bir kaç şey anlamına gelir. Yöntemi ile Product
adlı bir sınıfı some_function()
. $this
özel bir anlamı vardır, ve tek geçerli inside bir sınıf tanımı. Yani başka bir sınıf Product
sınıfının bir üyesi olurdu.
Yani kod yasal yapmak için, burada kod.
class Product {
public function some_function() {
print "I just printed Product->some_function()!";
}
}
class AnotherClass {
public $Product;
function __construct() {
$this->Product = new Product();
}
public function callSomeCode() {
// Here's your code!
$a_string = "Product";
$this->$a_string->some_function();
}
}
Sonra bu ile çağırabilirsiniz:
$MyInstanceOfAnotherClass = new AnotherClass();
$MyInstanceOfAnotherClass->callSomeCode();
Ben farklı cevap var herkes bu soruyu okudum görünüyor, ama kullanmak için çalışıyoruz variable variables?
Eğer dize kendisi bir işlevi çağırmak için çalıştığınız gibi gösterdiğin kodda görünüyor. Benim tahminim, bu durumda, bu dize olarak aynı ada sahip bir sınıf bir işlevi çağırmak istiyorum ki "Ürün."
Bu böyle bakmak ne olduğunu:
$this->Product->some_function();
Bunun yerine böyle bir şey arıyor olabilir gibi görünüyor:
$Product = new Product();
$Product->some_function();
Yani bir nesne var, ve bunun bir ("Ürün" olarak adlandırılır) özellikleri bir yöntemi denir some_function () olan başka bir nesne var.
Bu (PHP5.3) benim için çalışıyor:
<?PHP
class Foo {
var $bar;
}
class Bar {
function some_func(){
echo "hello!\n";
}
}
$f = new Foo();
$f->bar = new Bar();
$str = 'bar';
$f->$str->some_func(); //echos "hello!"
Etrafa PHP4 yok, ama orada işe yaramazsa, size some_function argüman geçmek gerekiyorsa call_user_func() (veya call_user_func_array kullanmak () gerekebilir () olabilir