从类PHP中返回变量

时间:2017-07-22 11:14:28

标签: php

我目前正在学习面向对象编程来编写自定义插件,我希望能够访问类中的变量。

例如,我的课程看起来像这样

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();

但我觉得这很笨重。任何想法都非常感激。

1 个答案:

答案 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