Для некоторых строковых вводов ($age
) Я должен выводить обратно «вы молоды», «вы подросток» и «вы стары», зависит от введенного возраста.Классы ООП и пример
Проблема с этим, то, что кажется, что мой код не так или иначе, я в начале с OOP
в PHP
, поэтому если вы можете помочь мне с некоторыми пояснениями, я буду благодарно
<form action="classvsinstance.php" method="get">
<input type="text" name="age" placeholder="age">
<input type="submit" value="submit">
</form>
и
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>";
инстанцировании класс
$p = new Person($age);
вызова метода
$ -> amIOld();
echo "\n";
Все выходы для каждого числа я кладу в форме, являются «Вы молоды».
Я не знаю, почему, и что я делаю неправильно здесь, потому что я пробовал все пути (кроме хорошего).
Внутри вашего класса используйте: '$ this-> age' вместо' $ age'! –
В каждом из методов вашего класса вам нужно ссылаться на класс '$ age', а не на локальный экземпляр, вы делаете это с помощью' $ this-> age', который * не совпадает с * $ age' в каждом из ваши методы. '$ age' в' yearPasses' всегда будет 0 -> 1, потому что это значение забывается, как только эта функция/метод заканчивается. То же самое с 'amIOld()', вы не ссылаетесь на значение * class * '$ this-> age' – Martin
Поскольку вы не сообщаете о получении ошибок« неопределенной переменной », вы, вероятно, работаете с display_errors и error_reporting отключены. Они никогда не должны отключать систему разработки/отладки. –