Php 函数内部全局化数组的替代方法

Php 函数内部全局化数组的替代方法,php,Php,我有很多数组,我经常需要在这样的函数内部创建全局数组 $siteSettings=/*some SQL work to make this array*/ function menuNav() { global $siteSettings; echo "Your site name is ".$siteSettings['name']; } menuNav(); 我知道我需要停止像这样使用“全局”。因此,我提出了这个替代解决方案,它对我来说更容易使用,但使用$GLOBALS,

我有很多数组,我经常需要在这样的函数内部创建全局数组

$siteSettings=/*some SQL work to make this array*/

function menuNav() {
    global $siteSettings;
    echo "Your site name is ".$siteSettings['name'];
}
menuNav();
我知道我需要停止像这样使用“全局”。因此,我提出了这个替代解决方案,它对我来说更容易使用,但使用$GLOBALS,我知道它也不是最好的

function siteSettings($key) {
    //if the globals siteSettings array doesn't exist, make it
    if (!$GLOBALS['siteSettings']) /*some SQL work to make this array*/
    //return the value of this key
    return $GLOBALS['siteSettings'][$key];
}

function menuNav() {
    echo "Your site name is ".siteSettings('name');
}
menuNav();
您能推荐一种更好的方法,让相同的数组或对象在函数内部和外部使用吗


还有。。。请不要建议像这样将数组传递给函数menunna($siteSettings)。我设置的实际函数非常复杂,并且使用了许多不同的数组,比如这个数组。我不想每次调用一个函数时都要经过十几个不同的数组。

我会使用一个静态公共变量:

class Site
{
    public static $settings;
}
Site::$settings = /* SQL work */;
然后您可以通过以下方式访问它:

function menuNav() {
    echo "Your site name is ".Site::$settings['name'];
}

对这太完美了!我问了三个不同的问题,关于如何在课堂上做这件事。为什么没人能像以前那样简单地解释一下呢!?!?!非常感谢。