我应该在哪里放置一个我想在多个控制器中使用的函数,而不仅仅是在我创建它的控制器中?

波丸

想象一下,我有 2 个控制器,UserController 和 PostController,但是,我想使用一个通用的函数,并且在主题上不属于这些类中的任何一个。就像是:

public function sum($numberOne, $numberTwo) {
    return $numberOne + $numberTwo;
}

我应该在哪里创建它以便能够在 UserController 和 PostController 中使用它?我经常读到从另一个控制器调用控制器方法是一种不好的做法,但我无法弄清楚有什么替代方法。

我可以在每个控制器中创建函数,但随后我会重复自己,并且代码不容易维护。

戴夫

在这些情况下,我在 App 文件夹中创建了一个 Helpers 文件夹。然后命名助手。IE:

日期帮手 App\Helpers\Dates.php


namespace App\Helpers;

/**
 * collection of methods for working with dates.
 */
class Date
{
    /**
     * get the difference between 2 dates
     *
     * @param  date $from start date
     * @param  date $to   end date
     * @param  string $type the type of difference to return
     * @return string or array, if type is set then a string is returned otherwise an array is returned
     */
    public static function difference($from, $to, $type = null)
    {
        $d1 = new \DateTime($from);
        $d2 = new \DateTime($to);

        $diff = $d2->diff($d1);

        if ($type == null) {
            //return array
            return $diff;
        } else {
            return $diff->$type;
        }
    }
 }

然后在任何类中导入命名空间:

use App\Helpers\Dates;

然后调用类

Dates::difference($from, $to);

这样我就可以根据helper需要创建尽可能多的类,如果我一遍又一遍地重用相同的类,那么为它们创建一个包是有意义的,以便它们可以在多个项目中使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该在哪里放置逻辑以加载视图控制器?

为什么我要使用枚举,而不仅仅是一个类?

我应该在哪里在模型或控制器中编写查询(序列化)?

我如何使用 GitHub Pages 创建不仅仅是一个 hello world?

我的表单需要其他数据,我应该在哪里放置路由和控制器方法来获取它?

我得到的是我所有的输出,而不仅仅是一个

如果我的应用程序在各种视图控制器中都使用位置管理器,我应该在哪里实例化它?

我如何让浏览器在新标签页中打开pdf文件,而不仅仅是下载它?

我应该在哪里安装TFS 2013测试控制器?

我应该在哪里获取推文?(控制器,模型,助手等)

我应该在控制器中设置父级,还是一个糟糕的主意?

我可以在 insertRow() 函数中放置 <input> 标签吗?不仅仅是文字

我应该在Elixir Phoenix的控制器或模型中使用Ecto.Repo吗?

要用 Hooks 创建函数组件,为什么我必须使用 JSX,而不仅仅是函数调用?

可以由多个控制器和命令使用的Laravel方法。应该在哪里?

pf阻止所有输入/输出流量,而不仅仅是我要阻止的一个端口

为什么我最后得到一个带有.vhost的进程的名称,而不仅仅是名称?

如何显示所有结果,而不仅仅是代表计算器中的一个

控制器位于应用程序层还是基础架构层中?我是否应该在Clean Architecture中使用控制器?

我应该在控制器和域服务之间放置命令总线吗?

如何创建一个类并存储它,而不仅仅是创建它

如何在Jquery中多次调用函数以添加事件侦听器,而不仅仅是侦听最后一个?

Php:为什么我的代码会回显表中的所有值,而不仅仅是这些值的一个子集?

如何让我的(如果列表中的“输入”)检查输入的每个字母,而不仅仅是输入的第一个字母?

我如何将所有从 jpg 图像生成的哈希保存到 csv 文件中,而不仅仅是最后一个?

我应该在哪里放置一个应该在后台运行的函数 - Swift 4

为什么我应该监视流程,而不仅仅是链接和陷阱出口?

我应该在可能不使用类的控制器中使用Lazy <T>吗?

反应本机| 为什么我的函数立即运行,而不仅仅是onPress?