A. 自己用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;
}
}
再創建個數據表,保存就好了,整個定時任務,定時去獲取比較好。
B. 在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();//這是錯誤的,不能調用保護方法
你需要理解繼承、公有、保護和私有的概念。
繼承:子類繼承父類的公有、保護屬性和方法。
公有:類的實例可以訪問的屬性和方法。
保護:只能在類的內部及其子類內部訪問的屬性和方法。
私有:只能在類的內部訪問的屬性和方法。
這是個很基礎的問題,建議你多看書。
C. phpclass是什麼意思,怎麼用
class關鍵字在PHP中用於聲明類。類是面向對象編程的核心,它封裝了數據和操作這些數據的方法。在PHP中創建類時,使用"class"關鍵字開頭,後面跟類名。
類定義後,可以創建類的實例,即對象。對象是類的具體化,它包含了類定義的數據和方法。通過實例化類,可以調用類中的方法並訪問其屬性。
類的定義通常包含屬性(數據成員)和方法(函數)。屬性用於存儲對象狀態,方法用於描述對象的行為。屬性可以是私有的(僅類內部訪問)、公有的(所有位置訪問)或受保護的(類內部和繼承類訪問)。方法則提供了一種執行特定操作的方式。
面向對象編程的基本原則之一是封裝,即隱藏對象的內部細節,並只暴露必要的介面供外部使用。在類中,可以通過公共方法訪問和修改屬性,而類的內部實現細節對外部隱藏。
實例化類後,可以通過對象名調用其方法,以執行特定操作。方法調用遵循面向對象編程的規則,如鏈式調用、多態等。多態允許同一方法名在不同類中有不同的實現,提供了一種靈活的編程方式。
在PHP中使用class關鍵字聲明類後,可以創建具有特定功能的模塊化代碼,使程序更易於維護和擴展。通過類的繼承,可以實現代碼的重用,即一個類可以從另一個類派生,繼承其屬性和方法。這有助於構建復雜系統時組織和管理代碼。
總之,class關鍵字在PHP中用於聲明類,它是面向對象編程的基礎,通過封裝數據和方法,提供了更強大、更靈活的程序設計能力。在實際應用中,合理使用類可以顯著提高代碼的可讀性、可維護性和復用性。
D. 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();
這才是實利化,明白嗎!