PHP - Bir sınıftan başka bir işlevi erişin

4 Cevap php

Nasıl işlevi bir içinde function b erişebilirsiniz?

Bu ben bugüne kadar ne var, ve ben bu hatayı alıyorum: PHP Ölümcül hata: tanımlanmamış bir yöntemde :: b () arayın

class test {
 function a($x) {
   switch($x)
   {
    case 'a'://Do something unrelated to class test2
      break;
    case 'b':
      $this->b();       
      break;
   }
 }
}

class test2 extends test {
 function b() {
  echo 'This is what I need to access';
 }
}

$example=new test();
$example2=new test2();
$example->a(b);

Arka plan bilgileri için - fonksiyonu bir AJAX yoluyla gönderilen istekleri için bir anahtardır. İsteğe bağlı olarak, vb düzenlemek, bir veritabanına bir kayıt eklemek için bir işlevi çağırır

Teşekkürler!

4 Cevap

Sen temel sınıf testinde bir soyut yöntem tanımlar b var (Bu sınıf soyut yapar, bu yüzden bunun örneklerini olamaz) bunun alt sınıfın sadece, aksi işlevi b bu sınıfta tanımlı değil, bu yöntemi çağırmak için Taban sınıf hiçbir şey bilmiyor (ve bir şey bilmek zorunda olmamalıdır).

Kalıtım kadar okuyun.

Başka bir şey: a ve b tanımlı değil, tırnak kullanın. (Ama bu örnekte sadece lazyness olabilir)

Sen yapamazsın, $ test test2 sınıfının bir örneği değil, bu nedenle yöntemi b yoktur. Eğer> test2-$ çağırırsanız a (b) yerine, bu sürece de sınıf test b () tanımlamak gibi, işe yarayabilir. Bu şekilde sınıf test2 b tanımı geçersiz kılar.

Bunu yapamazsın.

Işlev statik kapsamında çağrılabilir varsa, kullanabilirsiniz

test2::b();

Aksi takdirde yapmanız gerekir bir

test2Obj = new test2();
test2Obj->b();

Aşağıdaki bazı uygun belgeleri içerir: http://us2.php.net/manual/en/language.oop5.paamayim-nekudotayim.php