环境(或应用程序)特定功能

时间:2018-04-13 09:06:00

标签: php laravel

在Laravel中创建一个将被克隆到多个单独实例中的Web应用程序。我意识到可以在.env文件中放置特定于应用程序的变量,例如,如果应用程序具有适用于在其中执行的某些计算的佣金率,则可以指定一个转换率。一个安装的env文件,另一个安装中的另一个安装文件。

但我的问题是,如何通过环境特定功能做到最好?因此,如果每个安装都有不同的方法来计算佣金的计算方式,那么构建应用程序的最佳方法是什么,它适用于所有人,但是然后有一个特定于安装的方法来计算该应用程序的佣金?

3 个答案:

答案 0 :(得分:2)

我的建议是仍然使用特定于环境的变量,但是围绕这些变量编写函数实现。在您的示例中,您可以有不同的佣金率,以及几种计算佣金的方法。您可以使用一个变量来定义要使用的方法,如下所示:

class CommissionCalculator
{
    public function calculate()
    {
        $method = config('commission.method');
        $rate = config('commission.rate');
        if (method_exists($this, $method)) {
            return $this->$method($rate);
        }

        // throw an exception
    }

    public function method1($rate)
    {
        // Implement method1
    }
}

<强>配置/ commission.php

return [
    'rate' => env('COMMISSION_RATE'),
    'method' => env('COMMISSION_METHOD')
];

<强> .ENV

COMMISSION_RATE=1
COMMISSION_METHOD=method1

答案 1 :(得分:1)

您可以在CALCULATION_METHOD文件中添加.env.变量。您可以在计算方法中读取该值,并让逻辑依赖于该值。

每个“特定于安装”的配置都应存储在.env文件中。

答案 2 :(得分:1)

您可以在env文件中添加基值并在配置文件中加载基值,并添加代码以覆盖appserviceprovider.php启动方法中的此配置参数。

逻辑是,当app启动时,它检查来自db的条件,如果满足它,则覆盖配置值,这意味着你的计算自动改变