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ます。後者は、ローカル変数(存在しない)の代わりにクラス変数を使用します。

関数の-statementの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関数を削除します。これは、return呼び出しが却下された後のコードのため、これが呼び出されることはないためです。また、PHPビューで返しているコンテンツをすでにエコーしています。

于 2013-01-25T21:29:46.493 に答える