<?php
//Допустим есть метод, где мы получаем определенные поля, по типу
//...
$arProduct['REVIEWS'] = Review::getProductReviews($arProduct['ID']);
$arProduct['QUESTIONS'] = Question::getProductQuestions($arProduct['ID']);
//...
//Нужно сделать так, чтобы клиент мог указать какие поля не нужно загружать из бд.
//То есть, если $fieldsToLoad = [REVIEWS, QUESTIONS], значит их не нужно передавать клиенту. Как это возможно сделать? Есть //такой вариант:
$fieldsToLoad = [
'REVIEWS' => function () use ($arProduct, $reviewsSize) {
$arProduct['REVIEWS] = Review::getProductReviews($arProduct['ID']);
},
'QUESTIONS' => function () use ($arProduct, $questionsSize) {
$arProduct['QUESTIONS'] = Question::getProductQuestions($arProduct['ID']);
}
]
foreach ($fieldsToLoad as $fieldName => $fieldLoader) {
if (!in_array($fieldName, $notLoadFields)) {
$fieldLoader();
}
}
//Но проблема в том, что возможно нужно будет добавить общее условие для каких то полей, как пример:
//...
if ($block == 60) {
$arProduct['REVIEWS'] = Review::getProductReviews($arProduct['ID']);
$arProduct['QUESTIONS'] = Question::getProductQuestions($arProduct['ID']);
}
//...
//И тогда получается не очень, так как для каждого элемента массива $fieldsToLoad придется писать отдельное условие. Есть ли //более лучшее решение вопроса?