我不确定该如何称呼。实质上,可以说我创建了一个函数,该函数利用了一系列支持函数和变量,但是我不希望任何支持内容在全局范围内都可以访问,因此我可以为它们使用简短的名称。>
我现在可以在PHP中做的最好的事情就是
$my_cool_function_spacer = " ";
function my_cool_function_add($a, $b) {
global $my_cool_function_spacer;
return $a . $my_cool_function_spacer . $b;
}
function my_cool_function($a, $b, $c) {
return my_cool_function_add(my_cool_function_add($a, $b), $c);
}
Soo笨拙地写东西。我想做的是,我将在js中进行说明:
var my_cool_function;
(function(){
var spacer = " ";
function add(a, b) {
return a + spacer + b;
}
my_cool_function = function(a, b, c) {
return add(add(a, b), c);
}
})();
因此,在该代码段中,我创建了my_cool_function的内部元素。唯一可以全局使用的部分是my_cool_function,并且给诸如“ spacer”或“ add”之类的名称不是问题,因为它们仅限于创建函数的作用域,并且不能覆盖任何外部内容。
有没有一种方法可以遵循PHP中的相同编程风格?
答案 0 :(得分:0)
我找到了使用命名空间的解决方案
namespace my_cool_function_ns {
$spacer = " ";
function add($a, $b) {
global $spacer;
return $a . $spacer . $b;
}
function my_cool_function($a, $b, $c) {
return add(add($a, $b), $c);
}
}
// only downside is a bit clunky way to export to global namespace, maybe theres a better method?
namespace {
function my_cool_function($a, $b, $c) {
return my_cool_function_ns\my_cool_function($a, $b, $c);
}
}