如何在函数中使用PHP类方法而不使用全局变量?
我正在向Wordpress添加主题选项,为此我有一个如何在函数中使用PHP类方法而不使用全局变量?,php,wordpress,Php,Wordpress,我正在向Wordpress添加主题选项,为此我有一个theme\u options类 在类中,我有get\u field($field)方法来获取主题选项 我想创建一个函数,以便在我正在构建的WordPress主题中使用它来获取主题选项,但我不想使用全局变量 类主题\u选项 { 公共函数构造() { } 公共函数get_字段($field) { //获取主题选项的逻辑 返回$field; } } 现在我需要使用global$Theme\u Options来创建get\u field()函数 $
theme\u options
类
在类中,我有get\u field($field)
方法来获取主题选项
我想创建一个函数,以便在我正在构建的WordPress主题中使用它来获取主题选项,但我不想使用全局变量
类主题\u选项
{
公共函数构造()
{
}
公共函数get_字段($field)
{
//获取主题选项的逻辑
返回$field;
}
}
现在我需要使用global$Theme\u Options
来创建get\u field()
函数
$Theme\u Options=新的主题选项();
函数get_字段($field){
全局$Theme_选项
返回$Theme\u Options->get\u字段($field);
}
如何创建
get_field()
函数而不在该函数中使用全局变量?整个设计相当奇怪,但考虑到您使用的限制,类似于单例的东西可能会起作用
class ThemeOptions
{
private static $instance;
private function __construct()
{
}
public static function getInstance() {
if (self::$instance === null) {
self:$instance = new self();
}
return self::$instance;
}
public function getField($field)
{
// logic to get the theme option
return $field;
}
}
$ThemeOptions = ThemeOptions::getInstance();
// do whatever initialization you want to $ThemeOptions;
function get_field($field) {
return ThemeOptions::getInstance()->getField($field);
}
A不是一个很好的设计模式,但我知道为WP开发比通常更受限制。单例实例存在于全局空间中,因为它存储在静态属性中
您不能多次初始化该类,因为私有构造函数强制执行getInstance()
,以确保任何时候都不会有多个Theme\u选项
实例
您可以在插件初始化期间初始化
themeopions
对象,并且可以在模板中使用get\u field()
函数。由于模板呈现是在插件初始化之后进行的,那么您的操作
实例就会被适当地填充。在获取字段
函数中创建一个实例?。。。或者将对象传递到函数()中。该类已经实例化,我已经传递了一些数据。我不能再这样做了。它只能实例化一次,我必须在我的主题中的每个文件中都包含这个类。