PHP5.3: "tanımsız yöntemine Çağrı"

0 Cevap php

: Ben ile __ sihirli yöntemini çağırmak ve ben bu bir hata ya da değil emin değilim bazı testler (eski kod yerine) yapıyor

Bir sınıf olduğunu varsayalım Lets:

class Calc {
    function __invoke($a,$b){
        return $a*$b;
    }
}

Aşağıdaki mümkündür ve herhangi bir sorun olmadan çalışıyor:

$c = new Calc;
$k = $c;
echo $k(4,5); //outputs 20

However if I want to have another class to store an instance of that object, this doesn't work:

class Test {
    public $k;
    function __construct() {
        $c = new Calc;
        $this->k = $c; //Just to show a similar situation than before
        // $this-k = new Calc; produces the same error.
    }
}

Bizim gibi onu aramak için çalıştığınızda hata oluşur:

$t = new Test;
echo $t->k(4,5); //Error: Call to undefined method Test::k()

Ben bir "çözüm" class Test (k adında) içinde bir işleve sahip olabileceğini bilmek "ileri" çağrısı call_user_func_array kullanarak ama bu şık değil.

Ben (tasarım amaçlı) ortak bir sınıf içinde bu örneği tutmak ve ... diğer sınıflardan fonksiyonu olarak herhangi bir öneri aramak gerekiyor?

Güncelleme:

(En azından benim amaçlar için) ilginç bir şey buldu:

Biz yerel bir değişkene "sınıf değişkeni" atarsanız çalışır:

$t = new Test;
$m = $t->k;
echo $m(4,5);

0 Cevap