我正在玩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个方法,一个用于存储数字,另一个用于调用它们。
我加载了这个类并发送了数字,但不知怎的,我在回调它时失败了。我丢失了第二个和第三个号码,我只是不明白为什么......
答案 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;
}