php超级全局,如何使用它们

时间:2012-04-12 12:59:45

标签: php superglobals

小问题,做得更好

$HOST = $_SERVER["HTTP_HOST"];

并在我的网络应用程序中使用$HOST

OR

做得更好

define ( "HOST", $_SERVER["HTTP_HOST"] );

并在整个网络应用程序中使用HOST

OR

最好忘记使用变量和常量,每次需要主机时只使用$_SERVER["HTTP_HOST"];吗?

哪种方式更有效率。 哪种方式更具可读性。

我应该使用哪种方式?

4 个答案:

答案 0 :(得分:2)

对你使用第二个更好,

define ( "HOST", $_SERVER["HTTP_HOST"] );

定义它并在任何地方使用它。

在任何情况下都不要去第三个,因为硬编码将来会影响很多。

答案 1 :(得分:2)

你拥有的全局变量越少越好,恕我直言,所以只需在你的所有应用程序中使用$_SERVER["HTTP_HOST"]。如果你真的想定义它

define ( "HOST", $_SERVER["HTTP_HOST"] );

是要走的路

答案 2 :(得分:0)

全球状态通常很糟糕,因为它会耦合组件,打破IoC概念。

我会使用dependency injection在类和模块之间传递参数。

但是如果你真的想要使用全局变量,为什么不使用$_SERVER["HTTP_HOST"]

答案 3 :(得分:0)

更好的是相对术语。使用$ _SERVER [“HTTP_HOST”]是完全可以接受的,因为每个人都会本能地知道它应该是什么,而不必猜测它是否包含完整的URL或其他。

即使你必须欺骗生产主机名进行测试,你仍然可以使用$_SERVER['HTTP_HOST'] = 'www.mywebsite.whatever';