我是PHP的新手并编写了这段代码,其中包括一个类和两个实例。当所有标题词由title
函数大写时,该类包含一个setter和getter方法,用于访问私有ucwords()
属性以显示每个实例。它在该上下文中还包含“authors”属性。
当我执行代码时,我什么也得不到(title
和author
),也没有任何错误,所以我不知道我做错了什么(我做的)它是在teamtreehouse.com学习时作为个人练习的一部分)。
class Recipe {
private $title;
public $author = "Me myself";
public function setTitle($title) {
echo $this->title = ucwords($title);
}
public function getTitle($title) {
echo $this->title;
}
}
$recipe1 = new Recipe();
$recipe1->getTitle("chinese tofu noodles");
$recipe1->author;
$recipe2 = new Recipe();
$recipe2->getTitle("japanese foto maki");
$recipe2->author = "A.B";
注意:来自teamtreehous.com视频的AFAIU,如果我们想要访问私人财产,则需要使用setter-getter功能。
为什么没有打印?
答案 0 :(得分:3)
<?php
class Recipe {
private $title;
public $author = "Me myself";
/* Private function for set title */
private function setTitle($title) {
echo $this->title = ucwords($title);
}
/* public function for get title */
public function getTitle($title) {
$this->setTitle($title);
}
}
$recipe = new Recipe(); // creating object
$recipe->getTitle("chinese tofu noodles"); // calling function
echo "<br>";
echo $recipe->author;
?>
答案 1 :(得分:2)
你混淆了getter,setter和echo
。 Getters不应该接受参数并返回属性。 Setters接受参数和设置属性。 echo
将(文本)字符串输出到屏幕。
echo的文档。
class Recipe {
private $title;
public $author = "Me myself";
public function setTitle($title) {
$this->title = ucwords($title);
}
public function getTitle() {
return $this->title;
}
}
$noodles = new Recipe();
$noodles->setTitle("chinese tofu noodles");
echo ($noodles->getTitle);
//outputs 'chinese tofu noodles'
答案 2 :(得分:0)
您从未设置对象的标题。您已经使用了 get 功能,在这种情况下只打印出任何内容。
调整
<?php
$recipe1 = new Recipe();
//set the title
$recipe1->setTitle("chinese tofu noodles");
//get the title
$recipe1->getTitle();
在您的场景中,您不需要获取get函数的参数。
答案 3 :(得分:0)
在您的两个食谱示例中,您从不设置标题,因为您正在调用getTitle。 此外,getTitle不需要参数,因为您不在函数中使用它。
对于作者来说,你根本就不打印任何东西。
此代码应该有效:
for i in -100..100 {
let i = i as f32 * 0.01;
// ...
}