@kolyazapoteev

Можно ли задавать значения полей с помощью статических методов?

Хочу создать простой конструктор форм.
По задумке, он должен выглядеть так:
<?php

namespace core\forms\base;
use core\forms\base\FormFields;

class BaseForm {
    
    public $field1 = FormFields::TextField(); // Ошибка здесь
    public $field2 = FormFields::Submit();
    
}

То есть, есть класс, в котором каждое поле будет соответствовать одному полю формы, а сами данные о полях будут получаться путем из соответствующих статических методов другого класса:
class FormFields {
    
    public static function TextField(string $className = '', string $idName = '', string $placeholder = '', int $maxLenght = 128, string $value='') {
        return "<input type='text'></input>";
    }
    public static function Submit(string $className = '', string $idName = '', string $value="ОК") {
        return "<input type='submit'></input>";
    }

}

Однако в таком варианте получается ошибка:
Fatal error: Constant expression contains invalid operations in Fatal error: Constant expression contains invalid operations in /home/o/.../public_html/core/forms/base/BaseForm.php on line 8

При этом, если вывести этот-же FormFields::TextField(); в методе класса BaseForm через echo, например, то все будет хорошо.
Если использовать методы для описания полей нельзя, то как можно реализовать наиболее близкий функционал?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
class BaseForm {
    
    public $field1; // Ошибки здесь не будет
    public $field2;
    
    public function __construct(){
         $this->field1 = FormFields::TextField();
         $this->field2 = FormFields::Submit();
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час