Tabii ki:
Ölümcül hata: arayamaz abstract yöntemi baz :: test ()
Bu diyebileceğimiz hiçbir yöntem gövdeye sahip. Çalıştırırsanız (), bir Template Method, sen $this yerine self ile sınıf kapsamına bakın ve sonra da aranacak $ oğlunun bir örneğini oluşturmak olması gerekiyordu örneğin, bunun üzerine () çalıştırın
abstract class BaseClass {
abstract public function test();
public function run()
{
$this->test();
}
}
class Son extends BaseClass {
public function test()
{
echo 1;
}
}
$son = new Son;
$son->run(); // 1
o zaman sen de iyi denir testi () doğrudan olabilir, çünkü, hangi oldukça garip.
Ayrıca örnekte dikkat
son::run();
run () metodu static ilan edilmez ve PHP yine run () yürütmek olurken, yanlış kullanım olarak kabul edilir ve bir E_STRICT hata yükseltmek, çünkü yanlış. Ancak, (run tanımlamak için olsaydı) statik, yaparsın artık referans $this, statik bir yöntem örneği kapsamından çağrılan, ancak sınıf kapsam değil çünkü.
Edit Ben PHP5.3 çözüm eklemek, ama ben yazarak iken bu @ erenon zaten yaptım görmek üzereydi, bu yüzden ben sadece [(1)] {üzerinde PHP Kılavuzunda uygun başvuru ekleyin }.