OOP循环需要帮助

时间:2013-01-25 21:25:38

标签: php loops

我已经在网上搜寻并观看了无尽的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>

有人可以给我一些关于我哪里出错的指示吗?

2 个答案:

答案 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视图中返回的内容。