On line Y olmayan bir nesne üzerinde bir üye işlev X Çağrı Z

2 Cevap
<?php
class Conversor {
	function toLowerFirst($word) {
		$word = 'test';
		return $word;
	}
}

class Test {
	function test() {
		$word = 'Test';
		$word = $this->conversor->toLowerFirst($word);
		echo $word;
	}
}

class Launcher {
	function launch() {
		$Test = new Test();
		$Test->conversor = new Conversor();
		$Test->test();
	}
}

$launcher = new Launcher();
$launcher->launch();
?>

Neden 'test' echo değil mi?

2 Cevap

Bir eski stil yapıcı gibi görünüyor, bu yüzden çalışma being new Test(), yani ([{kurarım oluyor önce zaman - işlev test() sınıf adı ile aynı olduğu çünkü bulunuyor 2)]}.

Fonksiyonunu yeniden adlandırma veya Testi için yeni bir tarzı kurucu ekleyin: __construct()

Çağrı $word = $this->conversor->toLowerFirst($word); hata verir, çünkü fonksiyon toLowerFirst (sen Conversor bir var olmayan örneği aracılığıyla işlevini çağırmak) o anda yok

$word = $this->conversor->toLowerFirst($word); $word = Conversor::toLowerFirst($word); ve çalışacaktır ile değiştirin.

Edit: __ construct 2 kez benim önerim sonuçları yankı .. (test Testi için bir yapıcı olarak kabul edilir), çünkü daha iyi bir çözümdür