Eğer iki sınıf, A ve B. tersi kez hem sınıfları örneğini ve daha sonra A sınıfı B sınıfı çağrı yöntemleri, izin ve mümkün mü demek?
Bu iki nokta üst üste (::
) kullanılarak yapılabilir ...... ancak o zaman yöntem statik olur - bir dezavantaj bu? (Aşağıdaki örneğe bakınız)
Diğer yollarla yapılabilir mi? Arayüzleri ile?
Bu kod Benim yapmaya çalıştığım şey gösterir:
class A {
function horse() {
echo "horse";
}
}
class B {
function jump() {
// $A = new A; ... don't want to add this in each method.
$A->horse(); // Fails - $A is out of scope ($A = new A;).
// A::horse(); // Old code style - works.
// $this->horse(); // Works if you extend A - not self-documenting.
// $this->A->horse(); // Fails - out of scope.
}
}
$A = new A;
$B = new B; // Better to use "$B = new B($A);" ?
$B->jump(); // fails - the horse is sleeping.
Edit
Well, I am building a MVC-framework ve I want to re-use code from other classes. Some real-world examples:
- Bir veritabanı nesnesi sınıfları karşısında geçirilen ediliyor.
- / manipule URL'leri yaratan bir "url" class - diğer sınıfları tarafından kullanılan.
... Ve bir kod örneği:
class url { function anchor($url,$name) { return "<a href="{$url}\">{$name}</a>"; } } class someclass { function text($str,$url) { return "{$str}. " . $url->anchor($url,"Read more..."); } }