2014-01-08 4 views
0

Я новичок в PHP, вот мой коддоступа общедоступные свойства родительского класса с расширенной публичной функции класса

class number_config{ 
    public $length = 200, //declare a properties 
      $width = 100, 
      $height = 300; 
} 

class formula extends number_config{ 
     public function rectangular_prism(){ 
      $volume = $length * $width * $height; 
      echo 'The rectangular prism volume is: '. $volume .'meter cubic'; 
     // i want this echo produce this, 
     // The rectangular prism volume is: 6000000 meter cubic 

     //set the new member_config properties value 
      $length = 600; 
      $width = 1000; 
      $height = 400; 
     } 

     public function rectangular_prism2(){ 
      $volume = $length * $width * $height; 
      echo 'The rectangular prism volume is: '. $volume .'meter cubic'; 
     // i want this echo produce this, 
     // The rectangular prism volume is: 240000000 meter cubic 

     //and then set the other new member_config properties value, and so on 
      $length = 800; 
      $width = 2000; 
      $height = 300; 
     } 

} 
$rectangular_prism_volume = new formula(); 
echo $rectangular_prism_volume->rectangular_prism(); 
echo $rectangular_prism_volume->rectangular_prism2(); 

во-первых, я прошу прощения за эту глупую код PHP,
Я новичок, и просто пытается практиковать :)
что коды не работают,
это распечатывает ошибку


Примечание: Неопределенная переменная: ширина в xxx.php на линии

Примечание: Не определена переменная: длина в xxx.php на линии

Примечание: Неопределенная переменная: высота в xxx.php on line
Объем прямоугольной призмы: 0 м Eter кубического
Примечание: Неопределенная переменная: ширина в xxx.php на линии

Примечание: Не определена переменная: длина в xxx.php на линии

Примечание: Неопределенная переменная: высота в xxx.php on line
прямоугольный объем призмы: 0meter кубический

То, что я хочу спросить, как получить свойства этого родительского класса
на функцию, и назначить новые свойства значение, перезаписать ширину, длина, высота, значение свойства
Благодарим вас за всех, кто помог мне в этом деле :)

+3

Используйте '$ this-> width' и т.д., чтобы получить доступ к свойствам объекта внутри экземпляра класса –

+0

Вау .. это было так быстро человек ..: D спасибо за вашу помощь, это решает все , даже если я использую это с защищенными свойствами: D – Newbie123

ответ

0

Вот лучший подход к тому, что вы пытаетесь сделать, используйте метод set и get, чтобы установить значения элементов, когда вы хотите а затем получить его.

class number_config{ 
    public $length = 200; //declare a properties 
    public $width = 100; 
    public $height = 300; 

     public function setLength($l){ 
      $this->length = $l; 
     } 

     public function setWidth($w){ 
      $this->width = $w; 
     } 

     public function setHeight($h){ 
      $this->height = $h; 
     } 

     public function getLength(){ 
      return $this->length ; 
     } 

     public function getWidth(){ 
      return $this->width ; 
     } 

     public function getHeight(){ 
      return $this->height ; 
     } 

} 

class formula extends number_config{ 
     public function rectangular_prism(){ 
      $volume = $this->getLength() * $this->getWidth() * $this->getHeight(); 
      echo 'The rectangular prism volume is: '. $volume .'meter cubic'; 
     } 

     public function rectangular_prism2(){ 
      $volume = $this->getLength() * $this->getWidth() * $this->getHeight(); 
      echo 'The rectangular prism volume is: '. $volume .'meter cubic'; 

     } 

} 

$formula = new formula(); 

//call the function rectangular_prism() with some values 
$formula->setLength(600); 
$formula->setWidth(1000); 
$formula->setHeight(400); 
$formula->rectangular_prism(); 

//call the function rectangular_prism2() with some values 
$formula->setLength(800); 
$formula->setWidth(2000); 
$formula->setHeight(300); 
$formula->rectangular_prism2(); 
+0

хорошо видеть ваш код, но, к сожалению, я не только использую 3 свойства, я использую 20 или более свойств прямо сейчас. И я не хочу передавать значение в параметр функции :), если у вас есть лучший код, покажите мне;) – Newbie123

+0

Я вижу, есть ли у вас больше свойств, и вы хотите, чтобы они использовали «на лету», тогда лучше всего использовать "object-> property = val", поскольку, как вы сказали, это может быть больше 20. Вышеприведенный пример является иллюстрацией потока кода.Однако вы можете видеть магические методы, такие как __get() и __set(), они полезны, когда вы не знаете, сколько свойств у вас есть, и их можно использовать для установки и получения динамически. –

Смежные вопросы