Php 在其他函数中包装全局对象的访问器方法

Php 在其他函数中包装全局对象的访问器方法,php,function,object,Php,Function,Object,我专门用PHP和WordPress做了很多事情,我在WordPress应用程序中经常遇到这个概念;尽管如此,这个问题并不是WordPress所特有的。我将用一个例子来演示 假设有一个类的全局对象 global $foo; $foo = new Foo(); 然后这个类有一些访问器方法,可以用于我们的全局对象 global $foo; $bar = $foo->get_bar(); 我经常看到它被包装在一个通用函数中,该函数负责访问对象的方法,本质上隐藏了对象的那部分,使访问该项变得更简

我专门用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();

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

Wordpress创建时,OOP不是很流行。事实上,在PHP5中OOP变得更加严重,Wordpress从。。。PHP3

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


我不认为这有一个具体的名字

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

话虽如此,同样的事情也可以通过一种模式正确地完成:


是的,这被称为糟糕的编程。WordPress的代码库是一堆热气腾腾的猴粪。它的任何代码都不应该被仿真,我想这是为了向后兼容。大多数wordpress代码都是使用函数编写的。开发人员可能更改了该功能的实现,但保留了一个别名,因此主题开发人员仍然可以使用该功能。哈哈@moonwave99的评论让我大吃一惊,因为当问题出现时,它几乎立刻就被发布了但我同意安德烈·谢尔南德斯的观点。从外部的角度看WP中的任何东西,我都能理解,如果仅仅因为有那么多人接触过它,而它已经存在了这么长时间,而且它一直非常强调向后兼容性,那么在学习过程中就会失去很多东西,这将是一件可怕的事情。我想可能任何有这种历史的代码库都会变成一堆“热气腾腾的猴粪”。更好的观察者模式。他试图给出一个更接近他所描述的模式。谢谢马塞洛的回答。我可以肯定WordPress不是一个好的例子,因为他们非常强调向后兼容性,而且已经存在了很长时间。
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);