2016-11-06 3 views
2

私はOOPのコンセプトのWordPressプラグインを作っています。私はいくつかの有線の問題に直面しています。

まず私は今、私は私がmain-plugin.phpファイル

の新しいファイルを言わせて中に含まれる他のクラスを保持している別のPHPファイルをこの

include_once plugin_dir_path(__FILE__) . 'something.php'; 

class something { 
    //some var 
    public $a; 
    private function __construct() { { 
     //all of my wordpress hook calls are here 
    } 

    public function foo() { 
     $this->a = 55; // this is working fine and not giving any error 
    } 
} 

のようなクラスを持っているmain-plugin.phpファイルを持っていますsomething.php

であり、ここで私が持っている

class some { 
    //some variables 
    public $b, $c; 

    // now this this class when I'm doming 
    public function bar() { 
     $this->b =1; // this is giving me error saying this is not an object. 
    } 
} 

今、$thisがelseクラス内で動作しない理由がわかりません。また、これらの変数は静的変数ではないため、実際にはできません。self::$bだから、他の誰かが、$thisを使わずにクラス内の非静的変数にアクセスする方法を教えてくれることを願っていました。

答えて

1

文字列ではなくのインスタンスがhttps://github.com/isaumya/adsense-invalid-click-protector/blob/master/adsense-invalid-click-protector.php#L91にある必要があります。だから何かを試してみてください

$aicpAdmin = new AICP_ADMIN; 
add_action('admin_enqueue_scripts', array($aicpAdmin, 'admin_scripts')); 
+0

なぜあなたはそれを言っているのですか?クラス名だけを渡すことの問題は何ですか? – iSaumya

+0

インスタンスを渡さないと、静的メソッドのように 'admin_scripts'メソッドが呼び出されます。ここで' $ this'は使用できません。私は、あなたのエラーが '致命的なエラー:キャッチされていないエラー:オブジェクトのコンテキストにないときに$ thisを使う 'と仮定しました。 – LiTe

+0

はい。それは私が得ているエラーです。クラス名を渡すのではなく、他のクラスのメソッドを呼び出すたびに、そのクラスのオブジェクトを作成してオブジェクトを渡す必要があります。または、私のクラス内のすべてのもの(変数とメソッドの両方)を静的にしてから、クラス名で呼び出すだけです。私はこれがあなたが意味することを望んでいることを願っています。私があなたを正しく納得させるかどうか教えてください。 – iSaumya

0

は、クラス内の関数内でのみ使用できます。あなたは、変数を初期化したい場合は、construct functionを使用する:あなたは$test = new test()とクラスtestを初期化すると

public class test 
{ 
    public $a; 
    public function __construct() 
    { 
     $this->a = new db(); 
    } 
} 

は、$test->adbのインスタンスになります。

+0

さて、私は関数内で$ this-> bを使っていました。ごめんなさい。私は次の数分で問題のコードを編集します。 – iSaumya

+0

こんにちは、私は今質問のコードを更新しました。 – iSaumya

+0

これは完全に有効です。私の推測はあなたの他のクラスです。あなたが割り当てようとしているものは問題です。問題を診断するためにさらに詳しい情報が必要です – FrankerZ

関連する問題