给PHP对象属性赋值

6

我正在学习一门关于PHP的课程,但在完成其中一个任务时卡住了。

我卡住的部分是:

"PalprimeChecker [一个专为此任务创建的函数] 对象有一个名为number的属性。这个任务有两个部分。首先,将该属性赋值为17...."

我编写的代码返回错误,我无法继续进行...

include('class.palprimechecker.php');


$checker = new PalprimeChecker();
$checker->number = '17';

echo "The number " . "$checker";
echo "(is|is not)";
echo " a palprime.";

我完全不确定自己哪里出了错。有人知道赋值的正确方法吗?
希望你能帮助我,因为我快要抓狂了!
谢谢!

4
你遇到了什么错误? - Tobias Golbs
1
你能展示一下你的类代码吗? - Major Productions
2
你期望"$checker"执行什么操作?该对象可能没有字符串表示可供输出。你可以使用echo $checker->number,或者如果你想检查该对象,使用var_dump - Wrikken
你在尝试做什么?有哪些部分是有效的?有哪些部分无效?“不让我继续”是什么意思?你是否收到了错误信息?是什么错误?为什么要尝试回显 $checker?那不是一个字符串。PalprimeChecker 是否有 __toString 方法? - gen_Eric
类代码不可用,很抱歉!没有特定的错误信息被给出(所有操作都在浏览器沙盒中完成!)。我认为我的回声语句是我犯错的地方。这是从$checker变量连接值“17”的正确方式吗?谢谢。 - user2191622
@user2191622: 不是这样的。 值 17 存储在 $checker->number 中。 您想要打印它:echo "数字 " . $checker->number; - gen_Eric
4个回答

9

修改此内容:

echo "The number " . "$checker";

通过这个:
echo "The number " . $checker->number;

你试图打印整个对象(没有创建方法是不可能的,请查看orangePill的答案),你想要做的只是打印对象内部的数字。
此外,请注意在分配数字时不需要使用引号。这可能会在以后引起问题。你应该像这样简单地分配它:
$checker->number = 17;

干杯!明白了。我觉得我需要好好阅读一下这个。对于这个新手来说,教程似乎轻描淡写地跳过了一些难以理解的部分! - user2191622
2
很高兴能帮到你,别忘了接受一个答案并点赞其他相关的答案。 - Dany Caissy

2

在拼接字符串时要小心。

<?php


include("class.palprimechecker.php");
$checker = new PalprimeChecker;
$checker->number = 17;

echo "The number" . $checker->number . "";
echo "(is|is not)";
echo " a palprime.";

?>

2
你可以在 PalprimeChecker 类中添加一个 __toString 方法。
public function __toString(){
      return (string)$this->number;
}

这将允许 echo "The number " . $checker; 生成一个字符串。

0

嗯,你正在分配一个字符串,而不是一个数字。

$checker->number = 17; //Note that there are no quotes around '17'.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接