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