Хочу создать простой конструктор форм.
По задумке, он должен выглядеть так:
<?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, например, то все будет хорошо.
Если использовать методы для описания полей нельзя, то как можно реализовать наиболее близкий функционал?