2017-11-15 36 views
2

グローバル変数を宣言して初期化するにはどうすればよいですか? 。グローバル変数と初期化の宣言方法

私はlaravelでNEXMO SMS APPを使用しています。私はグローバル変数を持っていて、それを自分のコンストラクタで初期化して、パブリック関数でグローバル変数を使用します。私の公共の機能でそれを使用した後、それは未定義の変数を言う。どうして? 。私を助けるために裸をしてください、私はちょうど初心者です。ここで

が私のコードです:

class CheckVerify extends Controller { 
     private $client; 
     public function __construct() { 
      $client = app('Nexmo\Client');  
     } 

     public function mobile_verification($number) {       

     $verification = $client->verify()->start([ 
      'number' => $number, 
      'brand' => 'Mysite' 
     ]); 
     } 

     public function check_verify($code) {   
      $client->verify()->check($verification, $code); 
     } 
    } 

答えて

3

これは、グローバル変数でない変数のこれらの種類にアクセスするとき、それは

http://php.net/manual/en/language.oop5.properties.phpを参照)クラスで定義されたクラスのプロパティ、と呼ばれています参照する変数がどのオブジェクトに含まれているかをPHPに伝える必要があります。現在のオブジェクトの場合は、$thisを使用する必要があります。

$this->client = app('Nexmo\Client'); 

がに値としてこれを渡す...コンストラクタで値を符号化するのではなく、ハード考える - だからクラスには、余分なオプションとして

class CheckVerify extends Controller { 
    private $client; 
    public function __construct() 
    { 
     $this->client = app('Nexmo\Client');  
    } 

    public function mobile_verification($number) 
    { 
     $verification = $client->verify()->start([ 
      'number' => $number, 
      'brand' => 'Mysite' 
     ]); 
    } 

    public function check_verify($code) 
    {   
     $this->client->verify()->check($verification, $code); 
    } 
} 

が...のようなものでなければなりませんコンストラクタ...

これは依存性注入(DI)と呼ばれ、さらに柔軟性があります。

+0

なぜそれは私のように私に空のプロパティにアクセスできません –

+0

何があなたにそのエラーを教えてください? 'app( 'Nexmo \ Client')はあなたの期待する値を返しますか? –

+0

私はこのプライベート$ clientを試しました。 パブリック関数__construct(){ $ this-> $ client = app( 'Nexmo \ Client'); } それは私に与えます空のプロパティにアクセスできません –

関連する問題