保持整洁的全球范围

时间:2019-01-12 09:56:27

标签: php

我不确定该如何称呼。实质上,可以说我创建了一个函数,该函数利用了一系列支持函数和变量,但是我不希望任何支持内容在全局范围内都可以访问,因此我可以为它们使用简短的名称。

我现在可以在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中的相同编程风格?

1 个答案:

答案 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);
    }
}