0

我在 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

4 回答 4

4

随着return您退出该功能,每个功能只能使用一次。我猜你想要的是echo功能

  public function list_numbers()
    { 
        echo $this->number1;
        echo $this->number2;          
        echo $this->number3;
    }
于 2013-06-18T00:42:22.543 回答
2

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

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

如果你returnecho你的list_numbers()方法替换,你会得到你期望的输出。

此外,您没有“丢失”这些数字。您可以通过执行var_dump($this).

于 2013-06-18T00:43:42.867 回答
1

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

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

在这种情况下,您可以通过以下方式从函数中获取数组

$nums = $numbers->list_numbers();

您现在可以打印此数组或对它执行任何您可能想要的操作,就像您对任何其他数组执行此操作一样。

于 2013-06-18T00:47:05.950 回答
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;
    }
于 2013-06-18T00:52:42.163 回答