【问题标题】:How to declare global variable and initialization如何声明全局变量和初始化
【发布时间】:2017-11-15 08:03:06
【问题描述】:

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

我有这种情况,我在 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);
        }
    }

【问题讨论】:

    标签: php global-variables laravel-5.4 nexmo


    【解决方案1】:

    这不是全局变量,它称为类属性,在类中定义(见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'); 
    

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

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

    这称为依赖注入 (DI),可提供更大的灵活性。

    【讨论】:

    • 为什么,它给了我这样的感觉 无法访问空属性
    • 是什么给了你这个错误? app('Nexmo\Client') 是否返回您期望的值?
    • 我试过这个先生,私人 $client;公共函数 __construct() { $this->$client = app('Nexmo\Client'); } 它给了我无法访问空属性
    • 不是$this->$client,是$this->client——client前面没有$
    • 先生。非常感谢您在面向对象编程方面的丰富知识。
    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多