我已经在网上搜寻并观看了无尽的You Tube视频,但无法找到答案。我发现的大部分内容都是针对更复杂的问题,我只是一个新手。
我正在努力学习OOP。我拿了一个旧的PHP示例,我躺在那里,并决定尝试将其转换为oop。它只是一个带计数器的循环。问题是我无法解决这个问题。
我的原始视图页面就是这个......
<html>
<head><title>1 Loop</title></head>
<body>
<h2>1 Loop for age</h2>
<?php
$age=18;
while ($age <= 20)
{
echo ("You are " . $age . " years old. <br /> You are not old enough to enter. <br /><br />");
$age++;
}
echo ("You are " . $age . " You may enter!");
?>
</body>
</html>
现在我正在尝试创建一个class_lib页面和一个php页面。这是我的课程页面:
<?php
class person {
public $age;
function __construct($persons_age) {
$this->age = $persons_age;
}
function get_age() {
while ($age <= 20)
{
echo ("You are " . $age . " years old. <br /> You are not old enough to enter. <br /><br />");
$age++;
}
echo ("You are " . $age . " You may enter!");
return $this->age;
echo $this->age;
}
}
?>
最后,我的php视图:
<html>
<head>
<title>1 Loop</title>
<?php include("class_lib.php"); ?>
</head>
<body>
<h2>1 Loop for age</h2>
<?php
$obj = new person(17);
echo $obj->get_age();
?>
</body>
</html>
有人可以给我一些关于我哪里出错的指示吗?
答案 0 :(得分:2)
在get_age()
功能中,您使用$age
而不是$this->age
。后者使用类变量,而不是局部变量(不存在)。
删除位于echo $this->age;
- 函数语句后面的return
行。它永远不会达到,似乎没有任何价值,因为你已经打印了这个时代。
答案 1 :(得分:1)
你的get_age()函数是错误的,你试图像局部变量一样访问$ age变量,尽管它应该像类变量一样被访问。 试试这个:
function get_age() {
while ($this->age <= 20)
{
echo ("You are " . $this->age . " years old. <br /> You are not old enough to enter. <br /><br />");
$this->age++;
}
echo ("You are " . $this->age . " You may enter!");
return $this->age;
}
删除echo函数,它的最后一行,因为在返回调用被解除后,任何代码都不会被调用。 此外,您已经回显了您在php视图中返回的内容。