首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在laravel中,在多个方法中使用公共变量的最佳方法是什么?

在laravel中,在多个方法中使用公共变量的最佳方法是什么?
EN

Software Engineering用户
提问于 2021-09-19 10:52:41
回答 1查看 81关注 0票数 1

我有一个在请求开始时计算的$c变量。在计算完这个之后,有几个嵌套方法使用它作为其工作的一部分。我把$c变量传递给每个方法还是根据请求存储它(可能缓存它),这样做更好吗?并使用每个方法中存储的值来获得$c的值。

  • 办法一:
代码语言:javascript
复制
$c = 'time consuming calculated value`

a($c);
b($c);
e($c);


function a($c){
// some work using $c
}


function b($c){
// some work using $c
}


function c($c){
// some work using $c
}


function d($c){
// some work using $c
}

function e($c) {
// some work
d($c)
// some other work
}
  • 方法二
代码语言:javascript
复制
$c = 'time consuming calculated value`;
cache::set('unique-key', $c);

function a(){
// some work using cache::get('unique-key');
}


function b(){
// some work using cache::get('unique-key');
}


function c(){
// some work using cache::get('unique-key');
}


function d(){
// some work using cache::get('unique-key');
}

function e() {
// some work
 d();
// some other work
}

我正在使用第一种方法--正确地知道--来更多地分离方法(与数据收集),但不确定哪种方法更好,或者还有其他方法吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2021-09-19 14:41:36

这里有两个相反的目标

  • 避免对某些全局状态变量的任意依赖(这使得有关代码的测试和推理变得困难,尤其是在代码库增长时)
  • 避免编写大量繁琐、类似的代码,重复重复传递相同的参数。

通常,有一种折衷的可能性:如果这些函数a到f(或其中的几个)可以成为公共类的成员函数,那么$c可以传递到该类的构造函数中,并存储在一个成员变量中。因此,$c不再是纯全局状态或纯本地状态,而是类级状态(理想情况下,在对象构造之后不再发生任何更改)。

但是,如果用函数a到f作为成员函数创建类是有意义的,则不能由这些荒谬的名称a到f来决定。

因此,让我再次揭穿我们在这个站点上一遍又一遍地在数百个问题中看到的一个非常常见的误解:one不会仅仅通过查看语法结构来做出这样的决定--什么是“最好的”取决于预期的语义和上下文,而不提及问题中的任何一个,就很难说出在您的情况下什么是最有意义的。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/432030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档