如何在没有局部变量的情况下重新设计此PHP代码?
|
我有这样的功能:
function get_title($keyword) {
$titles = array(
\'p1\' => \'Title 1\',
\'p2\' => \'Title 2\',
// ... other data
\'pm\' => \'Some other title\',
\'pn\' => \'One more title\'
);
return $titles[$keyword];
}
将这样的数组保留在局部变量中是一种好习惯吗?例如,它具有大约50个标题。因此,每次我调用此函数时-脚本会加载50个标题?
我正在考虑使用ѭ1,但是全局不是不好的做法吗?
我是PHP的新手,早期我是用JS编写的。在JS中,我可以使用闭包来做到这一点:
var get_title = function() {
var titles = {
\'p1\': \'Title 1\',
\'p2\': \'Title 2\',
// ... other data
\'pm\': \'Some other title\',
\'pn\': \'One more title\'
}
return function(keyword) {
return titles[keyword];
}
}();
在这里,title-array不是全局的,并且每次调用该函数时都不会加载。
但是如何在PHP中做到这一点?
没有找到相关结果
已邀请:
6 个回复
徐百晴墓斜
要么
在这里使用静态类有点像Java语言中的闭包。 除非内存有问题,否则不要担心。
括宠
古擅坛犯
来自数据库吗?如果不是,那真的是微优化,我几乎可以说实例化该变量永远不会成为优化的瓶颈。 但是,如果您确实需要,有两种简单的解决方案。第一个确实是保留全局变量。一个问题是,任何人都可以修改您的全局数组。除此之外,这还算不错。 另一种解决方案是使用ѭ5作为静态静态成员来创建一个静态类。然后,只需创建一个调用此数组的公共方法即可。 这些解决方案只会实例化您的阵列一次。 编辑:啊,弗里茨演示了我的意思。
捐焦
数据,在这种情况下,最好将
作为参数传递给其他函数。
缮记箔
变量轻松地执行所需的操作:
使用“初始化为
/检查/设置值”技巧(而不是直接设置setting5ѭ的值),可以使用任何您喜欢的代码来初始化变量(包括非常数表达式)。 我当然更喜欢ѭ1,因为它可以更好地隐藏ѭ5的生产细节。类的static属性是完成此操作的另一种方法。两者之间的选择是恕我直言的风格问题。
芯伶句餐绕
}