⑴ 自己用thinkphp做微信接口类文件,遇一个问题,GET获取到的token,如何将这个变量传递到实例化的类里面
classIndexActionextendsAction{
publicfunctionindex(){
$token=D("wx_token")->field("add_ip",true)->select();
foreach($tokenas$key=>$v){
if($v['expire_time']-300<time()){
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$v['appid']}&secret={$v['secret']}";
$res=file_get_contents($url,false);
$this->getAccessToken($v['id'],$res);
}else{
$date=date("Y-m-dH:i:s");
echo"{$date}_____noexpire ";
}
}
}
privatefunctiongetAccessToken($token,$res){
$sign=false;
$json=json_decode($res);
$data['id']=$token;
$data['access_token']=$json->access_token;
$data['expire_time']=time()+7200;
$data['add_time']=time();
$data['add_ip']='127.0.0.1';
$db=D("wx_token");
$db->startTrans();
if($db->save($data)){
$db->commit();
$sign=true;
}else{
$db->rollback();
$sign=false;
}
return$sign;
}
}
再创建个数据表,保存就好了,整个定时任务,定时去获取比较好。
⑵ 在php中如何设置类的属性,如何调用类的方法
PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:
<?php
classMyClass{//定义MyClass类
public$name;//定义了一个公有属性
protected$_age;//定义了一个保护属性
private$_email;//定义了一个私有属性
publicfunctionmy_method(){//定义my_method方法
}
protectedfunction_my_method2(){//定义_my_method2方法
}
}
$obj=newMyClass;//实例化
$obj->name='noname';//设置name属性
$obj->_age=12;//这是错误的,不能设置保护属性
$obj->address='KingStreet.'//设置一个未声明的属性是允许的,效果和公有属性类似,但未赋值前不能使用。
$obj->my_method()//调用公有方法
$obj->_my_method2();//这是错误的,不能调用保护方法
你需要理解继承、公有、保护和私有的概念。
继承:子类继承父类的公有、保护属性和方法。
公有:类的实例可以访问的属性和方法。
保护:只能在类的内部及其子类内部访问的属性和方法。
私有:只能在类的内部访问的属性和方法。
这是个很基础的问题,建议你多看书。
⑶ 在php中self与$this的分别
1、意思上的区别
self代表类,$this代表对象(self是引用静态类的类名,而$this是引用非静态类的实例名)
2、用法上的区别
能用$this的地方一定使用self,能用self的地方不一定能用$this。
Python中self用法详解
1、以Student类为例,在Python中,定义类如下:
class Student(object):
pass
(Object)表示该类从哪个类继承下来的,Object类是所有类都会继承的类。
2、实例:定义好了类,就可以通过Student类创建出Student的实例,创建实例是通过类名+()实现:
student = Student()
3、由于类起到模板的作用,因此,可以在创建实例的时候,把我们认为必须绑定的属性强制填写进去。这里就用到Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑上去:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
⑷ php实例化
有几个书写错误,现在已经订正!
$arr = $this->GetRecord($SQL);//这不是调用父类中的方法吗?
我跟你说过,什么叫继承,就是说子类拥有父类的所有成员(在可继承的情况下),你可以通过作用域连接符使用父类成员,也可以通过$this关键字(静态的,私有的不行!!!!!)!!!!!!!
怎样来认识面向对象编程:
给你举个例子:
class student{
public $name;
public statics $age;
public function set_name($name){
$this->name=$name;//这是正确的
self::$name=$name;//正确
$name=$name;//这句错误
}
public function set_age($age){
$this->age=$age;//错误
self::$age=$age;//正确
}
}
//为什么会这样呢,也就是说,如果你要在类里面另外的成员,那么你就要通过
//$this关键字,或者作用域解析符,但是如果是静态成员,不能使用$this访问,来引用它,不能像普通的代码一样直接使用.
$this->name你可以这样理解,学生的名字,也就是说$this代表的就是类名
class boy_student extents students{
//这个类扩展自students,也就是说有students类的所有成员,
//当然你也可以添加students没有的成员
$aadress;
:
:
:
//如果你要应用父类的方法:可以这样:
parent::set_name(....)
//当然这里涉及到的东西足足可以写成一本书,不是说有的父类成员都能子类访问,有些甚至连继承都不行,这里涉及到可见性的问题!
}
*********************************
$this->xxx 实例化来调用的吗?
*******************************
这不是实例化,什么叫实例化,就是说,刚才我们定义的是一个抽象的东西,就像学生,他是一个类别;
$zhangshan = new students();
这才是实利化,明白吗!