一部の文字列入力($age
)では、「あなたは若い」、「あなたはティーンエイジャー」、「あなたは古い」という出力は、入力した年齢によって異なります。OOPクラスとインスタンス
それに伴う問題、私のコードは何とか間違っているようだということである、 私はPHP
でOOP
と冒頭でよ、あなたは、いくつかの説明で私を助けることができる場合、私はありがたい
<form action="classvsinstance.php" method="get">
<input type="text" name="age" placeholder="age">
<input type="submit" value="submit">
</form>
になりますクラス
$p = new Person($age);
をインスタンス
と
class Person{
public $age;
public function __construct($initialAge){
// Add some more code to run some checks on initialAge
if($initialAge < 0){
$age = 0;
print('Age is not valid, setting age to 0.');
} else {
$initialAge = $age;
}
}
public function amIOld(){
if($age < 13){
print("You are young.");
}elseif(($age>=13) && ($age < 18)){
print("You are a teenager.");
}else{
print("You are old");
}
public function yearPasses(){
// Increment the age of the person in here
$age++;
}
}
$age = $_GET['age'];
echo "Your age is " . $age . ".<br><br>";
方法
$ -> amIOld();
echo "\n";
私は形に入れておき番号のすべての出力を呼び出す
は、「あなたが若い」です。
なぜ私はここで間違っているのか分かりません。私はすべての方法を試しました(良いものを除いて)。あなたの構築物は後方物事をassigingさ
クラス内では、 '$ age'の代わりに' $ this-> age'を使用してください! –
それぞれのクラスメソッドでは、ローカルインスタンスではなく '$ age'クラスを参照する必要があります。これは' $ this-> age'で行います。*これは$ ageと同じではありません。あなたの方法。 'yearPasses'の' $ age'は常にその関数/メソッドが終了するとその値が忘れられるので0 - > 1になります。 '$ this-> age' – Martin
あなたは"未定義変数 "エラーを報告していないので、display_errorsとerror_reportingを無効にして実行している可能性があります。彼らはdevel/debugシステム上で決して離れてはいけません。 –