编写库代码时,将命名空间命名为防止潜在的命名冲突是一种众所周知的良好实践。但强制我的库用户在其代码中添加名称空间是一件好事吗? (强迫别人做我事先做的事情不是我的工作!我希望每个人都能自己判断。)
这些用户是否可以选择重用我的库代码而不必强制命名空间自己的代码?
据我所见:
use com\vendor\library\libname;
(单独)不起作用。需要“namespace”语句将其与“use”语句结合使用。
但是要用全局空间声明自己的代码:
namespace;
use com\vendor\library\libname;
或
namespace \;
use com\vendor\library\libname;
是不允许的。 它必须是(例如):
namespace my\own\code\namespace;
use com\vendor\library\libname;
我应该在命名空间版本和非命名空间版本中释放我的lib,以免强制我的用户使用命名空间。如何处理病毒效应?
答案 0 :(得分:2)
他们不必命名自己的代码来使用命名空间类
他们只能use
你的班级:
use com\vendor\library\libname;
$lib = libname();
echo $lib->showKittens();
或者只是用完整的命名空间初始化它:
$lib = com\vendor\library\libname();
echo $lib->showKittens();