无法检索参数

时间:2013-06-18 00:40:38

标签: php class function oop object

我正在玩PHP中的OOP。

我的index.php中有这段代码

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Numbers Class</title>
    </head>
    <body>
        <?php
        require_once("numbers.php");
        $numbers->start("1","2","3");
        echo $numbers->list_numbers();
        ?>
    </body>
</html>

这是我的numbers.php

<?php
// Class creation
class numbers
{
    private $n1, $n2, $n3;
    // Method creation
    public function start ($n1,$n2,$n3)
    {
        $this->number1=$n1; 
        $this->number2=$n2; 
        $this->number3=$n3;
    }
    public function list_numbers()
    { 
        return $this->number1;
        return $this->number2;          
        return $this->number3;
    }
}
// Object instance
$numbers=new numbers();
?>

现在,如果到目前为止我已经阅读过关于PHP的oop,我的输出应该是

1
2
3

但我只是

1

为什么???

我做错了什么???

我正在创建一个名为numbers的新对象,它有3个属性,我创建了2个方法,一个用于存储数字,另一个用于调用它们。

我加载了这个类并发送了数字,但不知怎的,我在回调它时失败了。我丢失了第二个和第三个号码,我只是不明白为什么......

4 个答案:

答案 0 :(得分:4)

如果return退出该功能,则每个功能只能使用一次。 我想你想要的是echo函数

  public function list_numbers()
    { 
        echo $this->number1;
        echo $this->number2;          
        echo $this->number3;
    }

答案 1 :(得分:2)

list_numbers()方法中,您return为第一个值。来自http://php.net/manual/en/function.return.php

  

如果在函数内调用,则return语句立即结束当前函数的执行,并返回其参数作为函数调用的值。 return也将结束eval()语句或脚本文件的执行。

如果您在return方法中将echo替换为list_numbers(),则会得到您期望的输出。

另外,你没有“丢失”数字。您可以通过执行var_dump($this)来验证这一点。

答案 2 :(得分:1)

Antoine和Ben的解释很好,但建议的修复可能也是

public function list_numbers()
{ 
    return array($this->number1, $this->number2, $this->number3);
}

在这种情况下,您可以通过

从函数中获取数组
$nums = $numbers->list_numbers();

您现在可以打印此数组或使用它执行任何其他操作,就像使用任何其他数组一样。

答案 3 :(得分:0)

改变这个......

 public function list_numbers()
{ 
    return array($this->number1, $this->number2,return $this->number3);
}

然后在你的php文件....

 <?php
    require_once("numbers.php");
    $numbers->start("1","2","3");
    $nums = $numbers->list_numbers();
    //use it in a loop or just print_r it or whatever....
    foreach($nums as $val){
       echo "Number is : ".$val;
    }