当前位置: 首页 > 后端技术 > PHP

PHP常用类分享(记录)

时间:2023-03-29 16:27:44 PHP

加密解密类自PHP7.1开始抛弃传统的加密函数mcrypt_encrypt转而使用openssl_encrypt,该类支持的PHP版本为:(PHP5>=5.3.0,PHP7)METHOD=$method;}}/***加密字符串**@paramString待加密数据*@paramstring加密密钥,如果为空,使用通用密钥*@returnvoid*/publicfunctionencrypt($input,$key=''){如果(空($key))$key=$this->KEY;$data=openssl_encrypt($input,$this->METHOD,$key,OPENSSL_RAW_DATA);$data=base64_encode($data);返回$数据;}/***解密字符串**@paramString待解密字符串*@paramstring解密密钥,如果为空,使用公钥*@returnvoid*/publicfunctiondecrypt($input,$key=''){if(空($key))$key=$this->KEY;$data=openssl_decrypt(base64_decode($input),$this->METHOD,$key,OPENSSL_RAW_DATA);返回$数据;}}发送邮件类首先下载PHPMailer,解压,放到你的项目中,修改类中的导入路径。_init();$this->_baseURL=$_SERVER['REQUEST_SCHEME']。'://'。$_SERVER['HTTP_HOST'];}privatefunction_init(){if($this->_email==null){$mail=newPHPMailer(true);尝试{$mail->SMTPDebug=0;$邮件->isSMTP();$mail->Host=get_global_config('mail.Host');$mail->SMTPAuth=true;$mail->Username=get_global_config('mail.Username');$mail->Password=get_global_config('mail.Password');$mail->SMTPSecure=get_global_config('mail.SMTPSecure');$mail->Port=get_global_config('mail.Port');$mail->setFrom(get_global_config('mail.Username'),get_global_config('mail.Fromname'));$this->_email=$mail;返回真;}catch(Exception$e){//返回null;返回假;}}返回真;}publicfunctionsendEmail($toEmail,$toUsername,$subject,$body){if(!$this->_email)返回false;尝试{$this->_email->addAddress($toEmail,$toUsername);$this->_email->isHTML(true);$this->_email->Subject=$subject;$this->_email->Body=$body;//当邮件不支持HTML时显示的邮件内容$this->_email->AltBody=$body;$this->_email->send();//echo'消息已发送';返回真;}赶上(例如$e){returnfalse;//echo'消息无法发送。';//echo'邮件程序错误:'.$this->_email->错误信息;}}}模拟锁使用Redis模拟进程锁,参考Todiscuz进程锁源码cache=Roc::redis();$this->cache->select(Roc::get('redis.db'));}/***是否锁定**@paramstring锁定名称*@paraminteger锁定时间*@returnboolean*/publicfunctionislocked($process,$ttl=0){$ttl=$ttl<1?600:整数($ttl);返回$this->_status('get',$process)||$this->_find($process,$ttl);}/***unlock**@paramstringlockname*@returnvoid*/publicfunctionunlock($process){$this->_status('rm',$process);$this->_cmd('rm',$process);}privatefunction_status($action,$process){static$plist=array();switch($action){case'set':$plist[$process]=true;休息;case'get':return!empty($plist[$process]);休息;案件'rm':$plist[$process]=null;休息;case'clear':$plist=array();休息;}返回真;}privatefunction_find($name,$ttl){if(!$this->_cmd('get',$name)){$this->_cmd('set',$name,$ttl);$ret=假;}else{$ret=true;}//$this->_status('set',$name);返回$ret;}私有函数_cmd($cmd,$name,$ttl=0){return$this->_process_cmd_memory($cmd,$name,$ttl);//静态$allowmem;//if($allowmem===null){//$allowmem=Roc::get('redis.db');//}//if($allowmem){//返回self::_process_cmd_memory($cmd,$name,$ttl);//}else{//返回假;////返回self::_process_cmd_db($cmd,$name,$ttl);//}}私有函数_process_cmd_memory($cmd,$name,$ttl=0){$ret='';$name='进行ss_lock_'.$name;switch($cmd){case'set':$ret=$this->cache->setex($name,time(),$ttl);}//$ret=memory('set','process_lock_'.$name,time(),$ttl);休息;case'get':$ret=$this->cache->get($name);//$ret=memory('get','process_lock_'.$name);休息;case'rm':$ret=$this->cache->delete($name);//$ret=memory('rm','process_lock_'.$name);}回显$cmd。':';变量转储($ret);返回$ret;}privatefunction_process_cmd_db($cmd,$name,$ttl=0){$ret='';switch($cmd){case'set':$ret=C::t('common_process')->insert(array('processid'=>$name,'expiry'=>time()+$ttl),假,真);休息;case'get':$ret=C::t('common_process')->fetch($name);如果(空($ret)||$ret['expiry']delete_process($name,time());休息;}返回$ret;}}Redis是一个简单的Redis操作类,支持在查找缓存时,执行相应的回调操作cache=newRedis();}//=============字符串操作/***设置缓存**@param字符串缓存键值*@paramString/对象缓存数据,可以是字符串也可以是数组。*@paramInt过期时间*@returnBoolean*/publicfunctionset($key,$value,$ttl=null){if(is_array($value))$value=serialize($value);如果($ttl!==null&&$ttl>0)返回$this->cache->setex($this->_key($key),$ttl,$value);否则返回$this->cache->set($this->_key($key),$value);}/***获取缓存数据**@paramStringvalue*@paramData默认值,设置后,如果缓存中没有数据,则返回默认值*@returnData*/publicfunctionget($键,$callback=false){$res=$this->cache->get($this->_key($key));如果($res===false&&$callback===true){$method_name="_$key";如果(method_exists($this,$method_name)){return$this->$method_name();}else{返回错误;}}//如果反序列化成功,则返回反序列化后的数据。//@prevent报告警告。如果(@unserialize($res)!==false)返回unserialize($res);返回$res;}/***删除缓存**@paramString需要删除的关键字*@returntrueorfalse*/publicfunctionrm($key){return$this->cache->delete($this->_key($钥匙));}publicfunctioninc($key,$step=1){return$this->cache->incr($this->_key($key),$step);}publicfunctiondec($key,$step=1){return$this->cache->decr($this->_key($key),$step);}privatefunction_key($key){返回$this->prefix。$键;}publicfunctiongetMultiple($keys){$_keys=[];foreach($keysas$key)$_keys[]=$this->_key($key);返回$this->cache->getMultiple($_keys);}//==============Hash操作publicfunctionhset($hash,$key,$value){return$this->cache->hSet($hash,$key,$价值);}公共函数hget($hash,$key){返回$this->cache->hGet($hash,$key);}publicfunctionhgetall($hash){return$this->cache->hGetAll($hash);}publicfunctionhvals($hash){return$this->cache->hVals($hash);}publicfunctionhkeys($hash){return$this->cache->hKeys($hash);}//================通用回调//这里是你的回调代码。}