2017-07-22 7 views
0

私は現在、カスタムプラグインを書くためのオブジェクト指向プログラミングを学んでいます。クラス内の変数にアクセスできるようにしたいと思います。クラス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(); 

しかし、私はそれがclunkyだと思う。どんな考えでも大歓迎です。コメントに記載溶液に次に

+0

$geoSlugArrayどのようにあなたのエラーテキストをグーグルでは?または、あなたはこのエラーに会ったと思いますか? –

+0

静的に使用されている場合、 '$ this-> var'を' self :: var'に置き換えてください。 – Jeff

+1

最初の '$ geoslugarray'も' public static'( 'var'は時代遅れです)にする必要があります。 'public static function'も指定してください(明確にするため)。最後に、実際にエラーを修正するには、 'self :: $ geoslugarray'を返すべきです。 –

答えて

1

:(それはプログラム的に操作されていない場合)、配列は常に同じままの場合

class GeoSlugArray { 

    private static $geoslugarray = array (
     'london', 
     'manchester' 
    ); 

    public static function lnz_wc_memberships_get_geoslugarray() { 
     return self::$geoslugarray; 
    } 
} 

は、また、PHP 5.6で一定のクラスを(使用する可能性があります0.0以降):

class GeoSlugArray { 

     const $geoslugarray = array (
      'london', 
      'manchester' 
     ); 
} 

あなたはクラス内からクラスの外からGeoSlugArray::$geoslugarrayまたはself::$geoslugarrayを使用してこれをアクセスすることができます。

このチュートリアルは古くなっているようですが、最近のものを探してください。

最後の少しのヒント:今日では、変数や関数のためのキャメルケースメソッドを使用し、これは主に考えられているベストプラクティス: $geoslugarray - >

関連する問題