我目前正在学习面向对象编程来编写自定义插件,我希望能够访问类中的变量。
例如,我的课程看起来像这样
class GeoSlugArray {
var $geoslugarray = array (
'london',
'manchester'
);
static function lnz_wc_memberships_get_geoslugarray() {
return $this->geoslugarray;
}
}
我会在页面上使用它/在这样的函数中:
$slugs = GeoSlugArray::lnz_wc_memberships_get_geoslugarray();
print_r($slugs);
但这不起作用我得到致命的错误:
Fatal error: Uncaught Error: Using $this when not in object context in /home/benefacto/public_html/dev/wp-content/plugins/bnfo-custom-memberships/includes/class-bnfo-wc-memberships-geoslug.php:28 Stack trace
我可以通过创建一个新实例来实现这一点,例如
$request = new GeoSlugArray();
$slugs = $request->lnz_wc_memberships_get_geoslugarray();
但我觉得这很笨重。任何想法都非常感激。
答案 0 :(得分:1)
在评论中描述的解决方案旁边:
class GeoSlugArray {
private static $geoslugarray = array (
'london',
'manchester'
);
public static function lnz_wc_memberships_get_geoslugarray() {
return self::$geoslugarray;
}
}
如果数组始终保持不变(如果不以编程方式操作),则还可以使用类常量(使用PHP 5.6.0或更高版本):
class GeoSlugArray {
const $geoslugarray = array (
'london',
'manchester'
);
}
您可以使用课堂外的GeoSlugArray::$geoslugarray
或课程内的self::$geoslugarray
来访问此内容。
您所遵循的教程似乎已经过时,您应该寻找更新的教程。
最后一点提示:对变量和函数使用camelCase方法,现在这被认为是最佳实践:
$geoslugarray
- > $geoSlugArray