0

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

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

4

2 回答 2

2

在您的get_age()函数中,您使用$age而不是使用$this->age. 后者使用类变量,而不是局部变量(不存在)。

删除echo $this->age;位于return函数 - 语句之后的行。因为您已经打印了年龄,所以它永远不会达到并且似乎没有任何价值。

于 2013-01-25T21:30:41.287 回答
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 视图中回显了您返回的内容。

于 2013-01-25T21:29:46.493 回答