thinkphp引入一个公共类,如何在其他方法里面不需要再实例化调用

时间:2022-09-29 14:40:32
thinkphp引入一个公共类,如何在其他方法里面不需要再实例化调用



<?php
namespace Index\Controller;
use Think\Controller;
use Com\Wechat;

class WuyeController extends CheckController {
   protected function _initialize(){
  $token = 'weixin'; //微信后台填写的TOKEN
  $wechat = new Wechat($token);
  } 
public function index(){
 $weObj->text("hello, I'm wechat")->reply();
 //在这里不能调用上面实例化的类
 //如何操作才可以使用
 }


    public function test(){
 $weObj->text("hello, I'm wechat")->reply();
 //在这里不能调用上面实例化的类
 //如何操作才可以使用

    }

}







thinkphp引入一个公共类,如何在其他方法里面不需要再实例化调用

15 个解决方案

#1


这就是个类  创建一个public 的变量....

#2


怎么创建呢,我都试过好像不能继承

#3


class WuyeController extends CheckController {
   protected $wechat;
   protected function _initialize(){
         $token = 'weixin'; //微信后台填写的TOKEN
         $this->wechat = new Wechat($token);
     } 
    public function index(){
         $this->weObj->text("hello, I'm wechat")->reply();
     }
     
 
    public function test(){
         $this->weObj->text("hello, I'm wechat")->reply();
    }
}

#4


谢谢回复,但是还是不行,提示Call to a member function text() on a non-object

#5


那就是没有实例化成功

#6


我用的类库是这个

#7


https://github.com/dodgepudding/wechat-php-sdk

#8


你的类库文件放在哪里,需要引入文件再试试,import  or vendor。

#9


类库是正确的,我在_initialize是可以正确引用的,但是放在其他方法里就不能引用

#10


顶下,有没有高手

#11


把初始化方法的protected  改为  public,然后按照三楼写的就对了

#12


在 wechat-php-sdk-master 项目中没有找到 CheckController 类定义
也没找到 _initialize 方法的定义

你能确认 _initialize 在类实例化时就执行了吗?

token 作为身份认证,通常是动态发放的,你写死了可以吗?

#13


_initialize 里可以直接用该类了
token 只是该类的一个参数,不加都可以,但是为什么在tp里面不能用呢

#14


我看到了一个wechat和一个weobj...

#15



<?php
namespace Index\Controller;
use Think\Controller;
use Com\Wechat;
 
class WuyeController extends CheckController {
   
   protected $weObj;

   protected function _initialize(){
         $token = 'weixin'; //微信后台填写的TOKEN
         $this->weObj = new Wechat($token);
     } 
    public function index(){
         $this->weObj->text("hello, I'm wechat")->reply();
         //在这里不能调用上面实例化的类
         //如何操作才可以使用
     }
     
 
    public function test(){
         $this->weObj->text("hello, I'm wechat")->reply();
         //在这里不能调用上面实例化的类
         //如何操作才可以使用
 
    }
 
}

#1


这就是个类  创建一个public 的变量....

#2


怎么创建呢,我都试过好像不能继承

#3


class WuyeController extends CheckController {
   protected $wechat;
   protected function _initialize(){
         $token = 'weixin'; //微信后台填写的TOKEN
         $this->wechat = new Wechat($token);
     } 
    public function index(){
         $this->weObj->text("hello, I'm wechat")->reply();
     }
     
 
    public function test(){
         $this->weObj->text("hello, I'm wechat")->reply();
    }
}

#4


谢谢回复,但是还是不行,提示Call to a member function text() on a non-object

#5


那就是没有实例化成功

#6


我用的类库是这个

#7


https://github.com/dodgepudding/wechat-php-sdk

#8


你的类库文件放在哪里,需要引入文件再试试,import  or vendor。

#9


类库是正确的,我在_initialize是可以正确引用的,但是放在其他方法里就不能引用

#10


顶下,有没有高手

#11


把初始化方法的protected  改为  public,然后按照三楼写的就对了

#12


在 wechat-php-sdk-master 项目中没有找到 CheckController 类定义
也没找到 _initialize 方法的定义

你能确认 _initialize 在类实例化时就执行了吗?

token 作为身份认证,通常是动态发放的,你写死了可以吗?

#13


_initialize 里可以直接用该类了
token 只是该类的一个参数,不加都可以,但是为什么在tp里面不能用呢

#14


我看到了一个wechat和一个weobj...

#15



<?php
namespace Index\Controller;
use Think\Controller;
use Com\Wechat;
 
class WuyeController extends CheckController {
   
   protected $weObj;

   protected function _initialize(){
         $token = 'weixin'; //微信后台填写的TOKEN
         $this->weObj = new Wechat($token);
     } 
    public function index(){
         $this->weObj->text("hello, I'm wechat")->reply();
         //在这里不能调用上面实例化的类
         //如何操作才可以使用
     }
     
 
    public function test(){
         $this->weObj->text("hello, I'm wechat")->reply();
         //在这里不能调用上面实例化的类
         //如何操作才可以使用
 
    }
 
}