在Laravel中创建一个将被克隆到多个单独实例中的Web应用程序。我意识到可以在.env文件中放置特定于应用程序的变量,例如,如果应用程序具有适用于在其中执行的某些计算的佣金率,则可以指定一个转换率。一个安装的env文件,另一个安装中的另一个安装文件。
但我的问题是,如何通过环境特定功能做到最好?因此,如果每个安装都有不同的方法来计算佣金的计算方式,那么构建应用程序的最佳方法是什么,它适用于所有人,但是然后有一个特定于安装的方法来计算该应用程序的佣金?
答案 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的条件,如果满足它,则覆盖配置值,这意味着你的计算自动改变