如何声明全局变量和初始化

How to declare global variable and initialization

如何声明一个全局变量并初始化它? .

我有这种情况,我在 laravel 中使用 NEXMO SMS APP,我有一个全局变量,我在我的构造函数中初始化它,然后我在我的 public 函数中使用全局变量.在我的 public 函数中使用它后,它说未定义变量。为什么? .请大家帮帮我,我只是个初学者。

这是我的代码:

 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);
        }
    }

这不是一个全局变量,它被称为 class 属性,它在 class 中定义(参见 http://php.net/manual/en/language.oop5.properties.php

访问这些类型的变量时,您必须告诉 PHP 哪个对象包含您引用的变量,当它是当前对象时您必须使用 $this。所以你 class 应该是这样的...

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);
    }
}

作为一个额外的选择 - 考虑而不是硬编码构造函数中的值...

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

将其作为值传递给构造函数...

public function __construct( $client ) {
    $this->client = $client;    
}

这称为依赖项注入 (DI),具有更大的灵活性。