Задать вопрос
@enzhi98

У меня есть следующий код, где я получаю ошибку «PHP Fatal Error: Constant expression contains invalid operations». Не могу исправить?

Вот само задание пытаюсь его сделать
Создайте класс Worker в отдельном файле. Данный класс будет хранить добавленных работников, выводить их список и сохранять в список в отдельном файле
Класс должен содержать:

Статическое, приватное свойство workers (массив).

Статический, публичный метод create.

Статический, публичный метод all.

Статический, публичный метод save.

Метод create должен принимать в качестве аргумента $worker (массив), состоящий из полей name (имя пользователя), email (адрес электронной почты), age (возраст) и profession (профессия). Полученный массив он должен добавлять в свойство workers, заведомо добавив в аргумент $worker поле register_time, в которое нужно занести временную метку, когда пользователь был добавлен в формате День-Месяц-Год Час:Минуты. Кроме того, нужно проверять, что все поля в массиве $worker не пустые, в противном случае этот массив добавлять в свойство workers - не нужно.
Выдает ошибку
Fatal error: Constant expression contains invalid operations in
Workers.php
<?php
class Worker{
public $name;
public $email;
public $age ;
public $prof;
public function __construct($name, $email, $age, $prof) {
$this->name = $name;
$this->email = $email;
$this->age = $age;
$this->prof = $prof;
}
public static $workers = [ // тут выдает ошибку
"name" => "$this->name",
"email" => "$this->email",
"age" => "$this->age",
"profession" => "$this->prof",
"register_time" => 'hgh'
];
}
?>

index.php
<?php
require_once "Worker.php";
$work = new Worker("Roman", "roman@gmail.com", 23, "Web-developer");
echo $work;
echo Worker::$workers("Roman", "roman@gmail.com", 23, "Web-developer");
  • Вопрос задан
  • 210 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@snake2
Сразу пишу legacy код
Не совсем понятен смысл этой строчки
public static $workers = [ // тут выдает ошибку
"name" => "$this->name",
"email" => "$this->email",
"age" => "$this->age",
"profession" => "$this->prof",
"register_time" => 'hgh'
];

Если хотите получить переменные, сделайте их вывод через функцию
public function getWorkers() { 
    return [
        "name" => $this->name,
        "email" => $this->email,
        "age" => $this->age,
        "profession" => $this->prof,
        "register_time" => 'hgh'    
    ];
}

и выведите
$work = new Worker("Roman", "roman@gmail.com", 23, "Web-developer");
var_dump($work->getWorkers());
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы