Alt yönteminde üst değişkenleri erişme

3 Cevap php

Ben şu anda iki sınıfları, Köpek diye bir tane, Kaniş diye bir tane var. Şimdi nasıl Kaniş sınıfından Köpek tanımlanmış bir değişken kullanabilirsiniz. Aşağıdaki gibi benim kod:

  class dog {
       protected static $name = '';

       function __construct($name) {
            $this->name = $name
       }
  }

  class Poodle extends dog {
       function __construct($name) {
           parent::__construct($name)
       } 

       function getName(){
           return parent::$name;
       }
  }

$poodle = new Poodle("Benjy");
print $poodle->getName();

Ben bu hatayı alıyorum

Uyarı: Undefined variable: adı

3 Cevap

i 'name' somut Dog bir niteliğidir, bu nedenle ilk etapta statik olmamalı sanırım. Statik olmayan üst sınıf devralınan bir sınıf içinde niteliklerini erişmek için, sadece "bu $" kullanın.

	class dog {
	   protected $name = '';

	   function __construct($name) {
			$this->name = $name;
	   }
	}

	class Poodle extends dog {
	   function getName(){
		   return $this->name;
	   }
	}

Sorun Dog yapıcısı olduğunu. You yazdı:

$this->name = $name;

Fakat $this aslında bir static değişken olduğunda name, bir instance değişken olduğunu ima eder. Bu onu değiştirin:

self::$name = $name;

Bu para cezası çalışması gerekir.

Köpeğinizin sınıfta size static, sen statik kelime etmeden değişken bildirmek zorunda gibi değişken $ ismini ilan etti

class dog {
   protected $name = '';

   function __construct($name) {
        $this->name = $name
   }
}



class Poodle extends dog {
   function __construct($name) {
       parent::__construct($name)
   } 

   function getName(){
       return $this->name;
   }
}

$poodle = new Poodle("Benjy");
print $poodle->getName();