如何声明全局变量并初始化它? 。
我有这种情况,我在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);
}
}
答案 0 :(得分:3)
这不是一个全局变量,它被称为类属性,它在类中定义(参见http://php.net/manual/en/language.oop5.properties.php)
访问这些类型的变量时,您必须告诉PHP哪个对象包含您引用的变量,当它是当前对象时,您必须使用$this
。所以你上课应该是...... ...
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),允许更大的灵活性。