gpt4 book ai didi

php - 关于在何处放置全局辅助函数的 OOP/MVC 建议

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:38 24 4
gpt4 key购买 nike

我的网站上有几个 Controller 正在处理表单数据。这些表单使用 AJAX,我在不同的 Controller 上有很多方法,这些 Controller 必须进行一些特定的处理才能以 JSON 编码格式返回错误 - 请参见下面的代码。显然这不是 DRY,我需要将这段代码移动到一个我可以全局使用的辅助函数中,但我想知道它应该去哪里!我应该创建一个包含此函数的静态帮助程序类(例如 Validation::build_ajax_errors()),还是因为此代码正在生成一种特定于应用程序并绑定(bind)到我正在使用的 jQuery 验证插件中的格式,它应该是静态的方法存储在例如我的主要网站 Controller 中,表单处理 Controller 从中扩展?

               //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;
}

最佳答案

恕我直言,您的问题归结为个人编程风格的问题。当我确定一段代码需要重构以符合 DRY 原则时,我并不总是以相同的方式重构它。

如果我理解正确,您需要在表单类中使用此函数/方法,并且所有这些表单类都扩展了相同的基表单类。在那种情况下,我会将有问题的方法提升到父类(super class)中(我知道你提到过你希望该方法“全局”可用,但你的用例的其余部分似乎暗示函数/方法只能是在你的表单类中使用。)。

当我实际上有一个我需要在整个应用程序中可用的辅助函数时(并且我确信没有其他地方可以放置它),我将它放在应用程序的入口点。使用 Zend Framework 的 MVC,该入口点将是公共(public) index.php(所有请求都通过 index.php 路由,使其成为全局函数的逻辑位置)。在该文件的底部,我总是添加一些辅助函数,以便在调试时节省一些输入时间。以“The most useful function you will ever use . . .”为例。

关于php - 关于在何处放置全局辅助函数的 OOP/MVC 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2809656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com