2016-10-29 21 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