Что такое public и почему не работает функция PHP?

Добрый вечер!

Я прохожу ООП в PHP на CodeCademy.
У меня получился вот такой код:
<!DOCTYPE html>
<html>
	<head>
	  <title>Reconstructing the Person Class</title>
      <link type='text/css' rel='stylesheet' href='style.css'/>
	</head>
	<body>
      <p>
        <!-- Your code here -->
        <?php
            class Person {
                public $isAlive = true;
                public $firstname;
                public $lastname;
                public $age;
            }
            
            public function __construct($firstname, $lastname, $age) {
                $this->firstname = $firstname;
                $this->lastname = $lastname;
                $this->age = $age;
            }
            
            $teacher = new Person("boring", "12345", 12345);
            $student = new Person("Alex", "Bagirov", 15);
            
            echo $teacher->isAlive;
            
            public function greet() {
                return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)";
            }
            echo $teacher->greet();
            echo $student->greet();
        ?>
      </p>
    </body>
</html>


Почему то система его приняла как верное решение, но в то же время компилятор выводит такую ошибку:
Parse error: syntax error, unexpected T_PUBLIC on line 18


В чем тут ошибка?
Расскажите еще, пожалуйста, что такое public?
Например, перед функциями тут сказали писать public, но особого объяснения его смысла в теории Codecademy я не нашел. Спасибо за помощь.
  • Вопрос задан
  • 3880 просмотров
Решения вопроса 2
@iznaur
public function __construct должен быть определен в классе:
class Person {
                public $isAlive = true;
                public $firstname;
                public $lastname;
                public $age;
            
            public function __construct($firstname, $lastname, $age) {
                $this->firstname = $firstname;
                $this->lastname = $lastname;
                $this->age = $age;
            } 
}

также у вас метод greet должен быть определен в классе,иначе не будет работать
Советую лучше прочитать книги Джорджа Шлосснейгла "Профессиональное программирование" или Мэтта Зандстры "PHP. Объекты, шаблоны и методики программирования",возможно лучше поймете,что такое ООП
Ответ написан
socengel
@socengel
7 лет native php в продакшене, онлайн 20000+,
class Person {
public $isAlive = true;
public $firstname;
public $lastname;
public $age;
}

public function __construct(){} - функция за пределами класса не может быть публичной или вообще иметь какой либо модификатор доступа.

public значит что к этому методу могут обращаться все кому не попадя (echo $teacher->isAlive;). при любом другом модифиаторе доступа такой код вызовет ошибку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы