У меня есть несколько контроллеров на моем сайте, которые обрабатывают данные формы. Формы используют AJAX, и у меня есть несколько методов для разных контроллеров, которым приходится выполнять определенную обработку для возврата ошибок в кодированном формате JSON - см. Код ниже. Очевидно, что это не СУХОЙ, и мне нужно переместить этот код в одну вспомогательную функцию, которую я могу использовать глобально, но мне интересно, куда это должно идти! Должен ли я создать статический вспомогательный класс, который содержит эту функцию (например, Validation :: build_ajax_errors()), или поскольку этот код создает формат, который является специфичным для приложения и связанным с плагином проверки jQuery, который я использую, должен ли он быть статическим метод, хранящийся, например, в моем основном контроллере сайта, от которого распространяются контроллеры обработки формы?Рекомендации OOP/MVC о том, где разместить глобальную вспомогательную функцию
//if ajax request, output errors
if (request::is_ajax())
{
//need to build errors into array form for javascript validation - move this into a helper method accessible globally
$errors = $post->errors('form_data/form_error_messages');
$i = 0;
$new_errors = array();
foreach ($errors as $key => $value)
{
$new_errors[$i][0] = '#' . $key;
$new_errors[$i][1] = $value;
$new_errors[$i][2] = "error";
$i++;
}
echo '{"jsonValidateReturn":' . json_encode($new_errors) . '}';
return;
}
Привет, Джереми, вы правы в отношении «глобальной» природы функции, она имеет значение только для классов классов. Суперкласс - фактически главный контроллер веб-сайта, который расширяется не только классами форм, но и рядом других классов. Теперь, глядя на мой код, я, вероятно, должен иметь общий контроллер класса формы, расширяющий мой контроллер веб-сайта и расширяемый конкретными контроллерами на основе форм. Есть определенные кусочки и кусочки, которые повторно используются всеми моими формами, поэтому они должны быть действительно реорганизованы в общий контроллер формы, который был бы хорошим местом для моей функции. – franko75
CodeIgniter использует «помощников», которые являются в основном функциональными библиотеками, которые вы можете использовать загружать по желанию. Функции переходят в глобальную область и могут быть вызваны из любой точки при загрузке. –