3

我专门用 PHP 和 WordPress 做了很多事情,我在整个 WordPress 应用程序中经常遇到这个概念。虽然,这个问题并不特定于 WordPress。我将用一个例子来演示。

假设有一个类的一些全局对象。

global $foo;
$foo = new Foo();

然后这个类有某种可以与我们的全局对象一起使用的访问器方法。

global $foo;
$bar = $foo->get_bar();

好吧,我经常看到它包含在一个通用函数中,该函数负责利用对象的方法,本质上隐藏了它的那部分,使得访问该项目变得更加简单。

function wp_get_bar() {
    global $foo;
    return $foo->get_bar();
}

因此,使用该应用程序的开发人员可以在他们想要的任何地方执行此操作,而无需特别了解 $foo 全局对象:

$bar = wp_get_bar();

我只是好奇这是否是一个通用的计算机科学概念?如果是这样,它有名字吗?或者这是我可以在某个地方读到更多的东西?

4

2 回答 2

1

回答您的直接问题;不,没有通过函数内的全局构造访问变量的官方术语,非官方的?“不要这样做”怎么样。

话虽如此,使用单例模式可以正确地完成同样的事情:

class Foo {

    protected $bar;

    public function setBar($bar)
    {
        $this->bar = $bar;
    }

    public function getBar()
    {
        return $this->bar;
    }
}

class Foo_Package
{
    public static $foo;
}

function functionOne($params)
{
    var_dump(Foo_Package::$foo->getBar());
}

function functionTwo($id)
{
    var_dump(Foo_Package::$foo->getBar());
}

Foo_Package::$foo = new Foo();

$foo->setBar('Hi I\'m Bar!');

Foo_Package::$foo = $foo;

functionOne(array('id' => 1));

functionTwo(1);
于 2013-05-18T00:34:14.093 回答
0

创建 Wordpress 时,OOP 并不是很流行。事实上,随着 PHP5 的出现,OOP 变得更加严肃,而 Wordpress 是从... PHP3 开始的?

此外,我认为为了方便新手用户,Wordpress 开发人员选择使用过程函数而不是对象和类。如果您对 WP 核心没有深入的了解,那就更简单了。

我不认为这有一个特定的名称。

于 2013-05-18T00:28:08.460 回答