2016-05-01 6 views
0

Я пытаюсь разобраться с конструкторами и PHP в целом, но то, что я пытаюсь достичь здесь, - это способ вычисления объема, диаметра и площади круга с PI и FOUR_THIRDS в качестве констант в классе.PHP: Как рассчитать объем, диаметр и площадь круга?

Мой код продолжает говорить, что есть константа с константой, указав, что они не определены, но я скопировал метод из php.net. Тогда $radius также отображается как неопределенная переменная, поэтому я должен добавить $radius = 1; в класс, чтобы определить его, является ли это то, что это означает, определяя?

<?php 

class SphereCalculator { 

const PI = 3.14; 
const FOUR_THIRDS =4/3; 



    public function __construct($radius){ 
     $this->classRadius = $radius; 
    } 

    public function setRadius ($radius){ 
     $this->classRadius = $radius; 
    } 

    public function getRadius(){ 
     return $this->classRadius; 
    } 


    public function getVolume() { 

     return FOUR_THIRDS * PI * ($this->classRadius * $this->classRadius); 
    } 


    public function getArea() { 

     return PI * ($this->classRadius * $this->classRadius); 
    } 

    public function getDiameter() { 

     return $this->classRadius += $this->classRadius; 
    } 

} 

$mySphere = new SphereCalculator(); 
$newRadius =$mySphere->radius; 
$newRadius = 113; 

echo "The volume of the circle is ".$mySphere->getVolume()."<br>"; 
echo "The diameter of the circle is ".$mySphere->getDiameter()."<br>"; 
echo "The area of the circle is ".$mySphere->getArea()."<br>"; 



?> 
+1

константы класса ссылаются как 'само :: FOUR_THIRDS' (внутри класса) или 'SphereCalculator :: FOUR_THIRDS' (вне класса); глобальные константы называются «FOUR_THIRDS» .... вы определили константы класса –

+0

Для диаметра; не используйте '+ =', просто используйте '+', иначе вы фактически удваиваете значение свойства classRadius каждый раз, когда вы вызываете 'getDiameter()' –

+0

. Кроме того, вам не хватает '* $ this-> classRadius' - том 4/3 PI R^3 –

ответ

1

Необходимо определить константу FOUR_THIRDS как плавающее значение или целочисленное значение. Вы определили как 4/3, что неприемлемо.

Следовательно, вам нужно определить, как,

const PI = 3.14; 
const FOUR_THIRDS = 1.33; 

Поскольку вы определили константы внутри класса, он принимает его в качестве переменной-члена самого класса. Следовательно, вам нужно будет получить доступ к константам с self::PI.

Другая проблема с вашим кодом php - это неправильное определение конструктора. У вас есть параметр при определении конструктора, но в основной части кода, где вы создали объект, вы не передали параметр.

Вот ссылка на исправленной PHP код: https://ideone.com/UOMUPf

+0

Блестяще! Это сработало, спасибо вам большое! –

+0

Отмечено этот ответ как ответ и передержка. Было бы полезно и мне. :) – ashish

+0

Я не могу повышать, m только новый (мне нужен представитель 15), но я дал ему большой зеленый галочку от меня! Еще раз спасибо! –

0

Вы должны использовать константы, используя имя класса как ClassName::ConstantName, и если вы используете в классе, то вы можете использовать в качестве self::ConstantName.

Итак, вы должны использовать свои константы как self::PI и self::FOUR_THIRDS.