我目前正在创建/重建一个相当大的PHP应用程序/网站,它使用一些不同的API和数据库接口。因此,我必须存储API密钥,应用密钥和其他此类配置数据,以便所有不同的文件/页面都可以集中访问它们。
目前,我在全局上下文中声明变量并使用require_once()包含它们:
<?php //config.php
$API_KEY['somename'] = "THIS_IS_MY_API_KEY";
$API_KEY['othername'] = "ANOTHER_API_KEY";
$APP_ID['somename'] = "APP_ID_HERE";
$APP_ID['othername'] = "OTHER_APP_ID";
//So on and so forth, with all of the API data I need, like API URLs
//Also, I'm declaring things like this...
$__SITEWIDE_KILLSWITCH = false;
$__DEBUG_MODE = false;
$__DISPLAY_ERRORS = false;
?>
然后,在我的其他文件中,我引用这些变量:
require_once('path/to/config.php');
唯一的缺点是,如果我必须在函数中引用它们,因为它们不是像$_GLOBALS
或$_SESSION
变量这样的超级全局变量,例如,我必须这样做:
function database_connect( ... ) {
global $API_KEY, $APP_ID, $API_URL; //etc...
...
...
}
如果可以,我想避免通过函数传入我的API密钥。我希望得到一些关于声明站点范围的全局常量的最佳实践,并且可能避免在每个函数的开头调用global
关键字。
我应该在声明中使用const
吗?使用define()函数有什么好处?
我是否使用require_once()
做正确的事情还是有更好的方法来做到这一点?
你们都在想什么?我该怎么做? 谢谢!