2016-05-01 25 views
0

私は一般的にコンストラクタとPHPの周りに頭を抱えようとしていますが、ここで達成しようとしているのは、クラスの定数としてPIFOUR_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' 'として参照されるか、または ';グローバル定数は 'FOUR_THIRDS'として参照されています....クラス定数を定義しました –

+0

直径については、 '+ ='を使わないで ''単純に '+'を使用してください。それ以外の場合は 'getDiameter()'を呼び出すたびに 'classRadius'プロパティの値を実際に倍にします –

+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コードにリンクされている:SphereCalculator :: FOUR_THIRDS`(クラス外部から)(クラス内)https://ideone.com/UOMUPf

+0

ブリリアント!それは働いて、ありがとう! –

+0

回答を返信してupvote。私にも役立つだろう:) – ashish

+0

私はupvote以来、私だけ新しい(私は15の担当者が必要です)が、私はそれを私から大きな緑のダニを与えました!ありがとうございました! –

0

あなたはClassName::ConstantNameのようなクラス名を使用して、定数を使用する必要があり、あなたはクラス内で使用している場合は、あなたがself::ConstantNameとして使用することができます。

したがって、定数をself::PIself::FOUR_THIRDSとする必要があります。

関連する問題