2016-10-29 47 views
-4
<?php 
    class SimpleClass{ 


     var $number1; 
     var $number2; 

     public function input_two_no($num1,$num2){ 
      $this->number1=$num1; 
      $this->number2=$num2; 
     } 

     public function the_sum(){ 
      $total = $number1+$number2; 
      return $total; 
     } 

     public function output_the_sum(){ 
      echo $total; 
     } 

     $numbers = new SimpleClass; 
     $numbers->input_two_no(10,5); 
     $numbers->the_sum(); 
     $numbers->output_the_sum(); 

    } 

?> 

請指出我在哪裏出錯了。我還沒有得到輸出。PHP OOP通過簡單地添加兩個數字

+0

另外,檢查$ total的變量範圍。 –

回答

1

有你做錯了一些事情,如:

  • 把這個代碼塊$numbers = new SimpleClass; ... $numbers->output_the_sum();外的類。
  • 看到這個聲明裏面the_sum()方法,

    $total = $number1+$number2; 
    

    你沒有申報命名$number1$number2the_sum()方法的任何局部變量。相反,你應該在這裏使用實例變量。

  • 請參閱本聲明output_the_sum()方法,

    echo $total; 
    

    你沒有申報命名$totaloutput_the_sum()方法的任何局部變量。相反,創建一個名爲$total的實例變量並將總和值存儲在此實例變量中。稍後,您可以使用echo $this->total;顯示總和值。

所以,你的代碼應該是這樣的:

class SimpleClass{ 
    var $number1; 
    var $number2; 
    var $total; 

    public function input_two_no($num1,$num2){ 
     $this->number1=$num1; 
     $this->number2=$num2; 
    } 

    public function the_sum(){ 
     $this->total = $this->number1+$this->number2; 
    } 

    public function output_the_sum(){ 
     echo $this->total; 
    } 

} 

$numbers = new SimpleClass; 
$numbers->input_two_no(10,5); 
$numbers->the_sum(); 
$numbers->output_the_sum(); 
+0

感謝您的理念。 –

+0

@ChaoAbhishekPhukan很高興能幫到你。 *乾杯!* ;-) –

1

首先,你不需要2種方法。 input_two_no($num1,$num2)output_the_sum()。但是,您可以創建一個基本的構造方法。其次,要訪問成員變量(屬性),您需要使用php對象訪問表示法(->)。你的課堂應該如下所示。 sum方法本身返回作爲參數傳遞的2個數字的總和。

class SimpleClass{ 


     var $number1; 
     var $number2; 

     public function __construct($num1=null, $num2=null){ 
      $this->number1 = $num1; 
      $this->number2 = $num2; 
     } 

     public function the_sum($number1=null, $number2=null){ 
      if(!is_null($number1) && !is_null($number2)){ 
       return null; 
      } 

      if((!is_int($number1) || !is_float($number1) || !is_double($number1)) && 
       (!is_int($number2) || !is_float($number2) || !is_double($number2)) 
      ){ 
       return 'Numeric inputs only...'; 
      } 
      $this->number1 = $number1; 
      $this->number2 = $number2; 
      return $this->number1 + $this->number2; 
     } 

    } 

     $numbers = new SimpleClass; 
     $output = $numbers->the_sum(10,5); 
     echo $output;  //<== YIELDS 15