我刚刚开始编写一个以程序方式编写的开源软件,作为 OOP mvc 骨架/框架的替代方案。因此,虽然我可以编写自己的 OOP MVC 框架,但其预期目的是按程序完成。这是为了学习目的,也是为了在做一个新项目时准备好一个 DIY 代码库。我还没有完全精通 OOP,所以我觉得这样做是朝着这个方向迈出的一步。然而,这个项目的目的是作为一个程序替代,所以它必须按程序编写(我给出这个前言是为了避免使用 OOP 的答案)。
开始写作后,我意识到代码污染了全局命名空间很多(就像程序代码不会这样做)。
起初,为了解决污染全局命名空间和尽量减少意外命名冲突的问题,我决定在使用的变量和函数前加前缀,如下所示:
$prefix_variableName = 'value';
prefix_functionName($var){ return $var; }
然后我意识到有更好的方法来做到这一点。我有两个想法:
1:创建一个全局闭包数组。这样我在代码中设置的唯一全局是单个数组..就像这样..
$myApp = array(
'var1' => 'value1',
'var2' => 'value2',
'function1' => function($var1){ return $var1; },
'function2' => function($var2){ return $var2; }
//etc
);
2:在每个文件的顶部为全局代码创建一个命名空间......就像......
namespace myApp;
$var1 = 'value1';
function1($msg){ return $msg; }
这两种选择都可以吗?程序代码可以命名空间吗?在这种情况下,哪一个是更好的选择,为什么?还有更多选择吗?