2017-06-16 18 views
1
​​

ここでは、開始関数に$webAuthオブジェクトがあります。 dropbox_authでこれを使用すると、Undefined variable: webAuthと表示されます。1つの関数変数を抽象クラスの別の関数に使用する方法

私は私が自分のようにしようとしたUsing $this when not in object context

:: webauthのをも取得しています$this->webAuthを使用しています。これはAccess to undeclared static property:です。だから私はそれを使う方法を理解していない。

+0

あなたがここに抽象クラスを必要とする理由、抽象を削除して、このコンテキスト – Subash

+0

$を使用して、私は抽象class.thatを使用する必要がありませんが、要件が –

+2

あるYA私は保護された静的な$のように試してみましたwebAuthも同様ですが、dropbox_auth関数の変数$ webAuthは定義されていません – Akintunde007

答えて

0

抽象メソッドがprotectedとして定義されている場合、関数の実装はprotectedまたはpublicとして定義する必要がありますが、privateとして定義する必要はありません。

多くの例は抽象クラスのためのthereです。ちょうどあなたがすることができますかどうかを確認してください。抽象的ななしで尋ねるだけで、以下のようなクラスと関数を定義します。

class Dropboxapi { 
    public $this->webAuth=''; 
    public function abi() { 
     require __DIR__.'/app/Dropbox/autoload.php'; 
     $this->webAuth = new 
     Dropbox\WebAuth($appInfo,$appName,'path',$csrfTokenStore); 
    } 
    public function dropbox_auth() { 
     $authUrl = $this->webAuth->start(); 
    } 
} 
    $dropbox = new Dropboxapi(); 
    $dropbox->dropbox_auth(); 
-1

サンプルコード。要件に置き換えてください。

あなたはあなたが間違ったことを定義している静的

abstract class Dropboxapi { 
    protected static $webAuth; 

    public static function abi() { 
     self::start(); 
     self::dropbox_auth(); 
    } 

    public static function start() { 
     self::$webAuth = new Stdclass(); 
    } 

    public static function dropbox_auth() { 
     var_dump(self::$webAuth); 
    } 
} 

Dropboxapi::abi(); 
+0

はい私は静的な関数として宣言しています。 –

+0

ありがとうございます@Subash –

+1

このコードのOOPはどこですか?それは見つけられません。私が見ることができるのは、Dropboxapiと呼ばれるいくつかの空想的な名前空間の中で、いくつかのグローバル変数と関数です。 – axiac

0

、すべてを確認する必要があります。インタフェースと同様の抽象クラスは、「青写真」クラスとして使用される傾向があります。つまり、使用する別のクラスで拡張する必要があり、そのまま使用することはできません。抽象クラスのドキュメントで抽象クラスの$thisを使用すると、php.net:http://php.net/manual/en/language.oop5.abstract.phpの要約文書のようにうまくいきます。クラスDropBoxApi2が継承されたよう

class DropBoxApi2 extends DropBoxApi 
{ 

} 

、それはすでにそれの親の機能や性質を持っている:あなたがする必要がどのような

は、/継承があなたのDropBoxApiクラス、EXがいることを拡張する他のクラスを持つことです(DropBoxApi)。

$api = new DropBoxApi2(); 
$api->start(); 

さらに、使用するダブルコロンはスタティックオペレータです。抽象的なものとはまったく異なる概念です。

関連する問題