2017-11-15 6 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

나는이 sir, private $ client를 시도했다; 공용 함수 __construct() { $ this -> $ client = app ('Nexmo \ Client'); } 나에게 준다 빈 속성에 액세스 할 수 없다 –