Я создал CRUD модель для таблицы БД в виде Active Record. При валидации и сохранении некоторых полей в модели выполняются дополнительные операции. Класс получился достаточно большим. Чтобы сделать архитектуру кода более понятной, я разделил часть полей на группы и вынес их логику в отдельные подмодели, но сами поля оставил в основной модели. Я собирался запускать класс validate_all(), а уже в нём вызывать submodel1->validate(), submodel2->validate().
Но! Чтобы сохранять ошибки валидации в основной модели, а также перезаписывать поля основной модели, подклассам требуется доступ к объекту главной модели. Но я не могу передать в функцию значение $this. Например, я вызываю функцию validate_all() главного класса, а в ней мне нужно вызвать функцию validate_meta дочернего класса. И этот метод должен иметь доступ к экземпляру родительского класса. Как его организовать?
Сразу скажу, что очень не хотелось бы дробить таблицу на подтаблицы. Должен существовать паттерн, который позволит подкласса получить доступ к классу. Пока на ум приходит только отправлять ссылку на объект извне:
$item = new Item();
$item->obj = $item;
Это неудобно, и вообще не уверен, что это сработает