@karpo518

Как передать в качестве аргумента функции объект класса внутри его приватного метода?

Я создал CRUD модель для таблицы БД в виде Active Record. При валидации и сохранении некоторых полей в модели выполняются дополнительные операции. Класс получился достаточно большим. Чтобы сделать архитектуру кода более понятной, я разделил часть полей на группы и вынес их логику в отдельные подмодели, но сами поля оставил в основной модели. Я собирался запускать класс validate_all(), а уже в нём вызывать submodel1->validate(), submodel2->validate().

Но! Чтобы сохранять ошибки валидации в основной модели, а также перезаписывать поля основной модели, подклассам требуется доступ к объекту главной модели. Но я не могу передать в функцию значение $this. Например, я вызываю функцию validate_all() главного класса, а в ней мне нужно вызвать функцию validate_meta дочернего класса. И этот метод должен иметь доступ к экземпляру родительского класса. Как его организовать?

Сразу скажу, что очень не хотелось бы дробить таблицу на подтаблицы. Должен существовать паттерн, который позволит подкласса получить доступ к классу. Пока на ум приходит только отправлять ссылку на объект извне:

$item = new Item();
$item->obj = $item;


Это неудобно, и вообще не уверен, что это сработает
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
@JohnDidact
Нуб во всём
Мало чего понял... Но, если нужно использовать, так сказать себя в себе, объект класса в методе этого объекта, то $this, думаю, самое то, если я правильно понял.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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