【发布时间】:2022-06-13 15:20:24
【问题描述】:
我正在尝试学习 PHP,并得到了一个任务,其中一个函数接受一个颜色字符串并在一个数组中返回颜色对应的水果,经过几次尝试后,我偶然发现了我在这里找到的这段代码 sn-p .
public function getFruits($color)
{
$fruits = isset($this->fruitcolor[$color]) ? $this->fruitcolor[$color] : array();
return json_encode(array('color' => $color, 'fruits' => $fruits));
}
完整代码
class FruitColor
{
private $fruitcolor;
function __constructor($fruitcolor)
{
$this->fruitcolor = $fruitcolor;
}
public function getFruits($color)
{
$fruits = isset($this->fruitcolor[$color]) ? $this->fruitcolor[$color] : array();
return json_encode(array('color' => $color, 'fruits' => $fruits));
}
}
$fruitcolor = new FruitColor (
array
(
"red" => array("apple", "strawberry"),
"yellow" => array("lemon", "ripe mango")
));
echo $fruitcolor->getFruits("red");
echo "\n";
echo $fruitcolor->getFruits("violet");
echo "\n";
var_dump($fruitcolor);
应用 sn-p 后,创建的对象通过数组传递返回 NULL 值,如 var_dump() 的输出所示。这会导致返回一个空白数组,因为它会影响 getFruits() 函数中的 if 语句。为什么会返回 NULL 值?
{“颜色”:“红色”,“水果”:[]} {“颜色”:“紫罗兰色”,“水果”:[]} object(FruitColor)#1 (1) { ["fruitcolor":"FruitColor":private]=>
空}
【问题讨论】:
-
构造函数被称为
__construct,而不是__constructor...