站三界导航
首页 TP代码
  • tp5获取上周/这周7天时间
    tp5获取上周/这周7天时间

    /***获取上周的时间数组*@param$day获取当前周的第几天周日是0周一到周六是1-6*@param$format日期格式*@param$last是否获取上周,1=上周7天,0=这周7天*@returnarray*/functiongetWeekDayArr(int$day,string$format='Ymd',int$last=1){if($last==1){//获取本周开始日期,如果$day是0是周日:-6天;其它:$day-1天$beginLastweek=strtotime(date($format).'-'.($day?$day-1:6).'days');$curMonday=date($format,$beginLastweek);$startDay=date($format,strtotime("$curMonday-7days"));$data=[$startDay,date($format,strtotime("$startDay+1days")),date($format,strtotime("$startDay+2days")),date($format,strtotime("$startDay+3days")),date($format,strtotime("$startDay+4days")),date($format,strtotime("$startDay+5days")),date($format,strtotime("$startDay+6days")),];}else{//获取当前周几//获取本周开始日期,如果$day是0是周日:-6天;其它:$day-1天$week=date('w',time())-$day+1;$data=[];for($i=1;$i<=7;$i++){$data[$i]=date($format,strtotime('+'.$i-$week.'days'));}}return$data;}

    • TP代码
    • 59阅读
    • 2022-10-25

  • tp5自定义分页效果
    tp5自定义分页效果

    /***将多维数组继续分页,自定义分页效果*@paramarray&$array数组*@paramint$page当前页数*@paramint$limit每页页数*@paramint$order0-不变1-反序*@parambool$preserveKeytrue-保留键名false-默认。重置键名*/functionarrayToPage(Array&$array,int$page=1,int$limit=20,int$order=0,bool$preserveKey=false){$start=($page-1)*$limit;//计算每次分页的开始位置//反序if($order==1)$array=array_reverse($array);$array=array_slice($array,$start,$limit,$preserveKey);}

    • TP代码
    • 50阅读
    • 2022-10-25

  • tp5二维数组去重(支持多字段同时匹配去重)

  • tp6.0封装参数验证方法
    tp6.0封装参数验证方法

    封装方法://参数验证functionmy_validate($data,$rule,$msg=[]){$validate=\think\facade\Validate::rule($rule)->message($msg);$bool=$validate->check($data);if(!$bool){exit(json_encode(['code'=>MSG_PARAMS_ERROR,'msg'=>$validate->getError()],JSON_UNESCAPED_UNICODE));}}进行调用://tp验证类使用publicfunctiontest2(){$params=['name'=>'','info'=>['id'=>[1]]];$rule=['name'=>'require|number','info.id'=>'require|array'];$message=['name.require'=>'错误信息',];my_validate($params,$rule,$message);//$validate=Validate::rule($rule)->message($message);//$bool=$validate->check($params);//if(!$bool){//dump($validate->getError());////}}

    • TP代码
    • 45阅读
    • 2022-10-25

  • 在TP5中,模板里的{include file=
    在TP5中,模板里的{include file=""}里使用变量的解决方案

    在一个项目中遇到一个需求,需要在模板文件上一层加一个文件,类似dir/index/index.html这种东西,尴尬的是,这个dir是不固定的,所以我希望的是,在模板里能使用{includefile="$dir/index/index"},像什么{includefile=$dir."/index/index"}或者{includefile="{$dir}/index/index"}或者{includefile="$dir.index/index"},还有什么单双引号拼接之类的都试过,然而并不支持。所以我想到了下面几种种方式:1.提前定义好$dir=‘dir/index/index’然后直接写在{includefile="$dir"},但是这样就出现一个问题,我页面上那么多地方需要用到引入文件,不可能都定义一次,否定!2.拼接引入文件,这样可以使用变量,但是不会被渲染,导致我引入文件里的变量等全部需要用原生PHP写,这改动对我来说太大了,否定!3.改动框架源文件,让这里可以识别变量。然后我找到渲染模板替换文件,在根目录下的:thinkphp/library/think/Template.phpl里有个方法:publicfunctionparse(&$content){//内容为空不解析if(empty($content)){return;}//替换literal标签内容$this->parseLiteral($content);//解析继承$this->parseExtend($content);//解析布局$this->parseLayout($content);//检查include语法$this->parseInclude($content);//替换包含文件中literal标签内容$this->parseLiteral($content);//检查PHP语法$this->parsePhp($content);//获取需要引入的标签库列表//标签库只需要定义一次,允许引入多个一次//一般放在文件的最前面//格式:<taglibname="html,mytag..."/>//当TAGLIB_LOAD配置为true时才会进行检测if($this->config['taglib_load']){$tagLibs=$this->getIncludeTagLib($content);if(!empty($tagLibs)){//对导入的TagLib进行解析foreach($tagLibsas$tagLibName){$this->parseTagLib($tagLibName,$content);}}}//预先加载的标签库无需在每个模板中使用taglib标签加载但必须使用标签库XML前缀if($this->config['taglib_pre_load']){$tagLibs=explode(',',$this->config['taglib_pre_load']);foreach($tagLibsas$tag){$this->parseTagLib($tag,$content);}}//内置标签库无需使用taglib标签导入就可以使用并且不需使用标签库XML前缀$tagLibs=explode(',',$this->config['taglib_build_in']);foreach($tagLibsas$tag){$this->parseTagLib($tag,$content,true);}//解析普通模板标签{$tagName}$this->parseTag($content);//还原被替换的Literal标签$this->parseLiteral($content,true);return;}这里的$this->parseInclude($content);就是引入相关功能代码!进入后是如下代码:privatefunctionparseInclude(&$content){$regex=$this->getRegex('include');$func=function($template)use(&$func,&$regex,&$content){if(preg_match_all($regex,$template,$matches,PREG_SET_ORDER)){foreach($matchesas$match){$array=$this->parseAttr($match[0]);$file=$array['file'];unset($array['file']);//分析模板文件名并读取内容$parseStr=$this->parseTemplateName($file);foreach($arrayas$k=>$v){//以$开头字符串转换成模板变量if(0===strpos($v,'$')){$v=$this->get(substr($v,1));}$parseStr=str_replace('['.$k.']',$v,$parseStr);}$content=str_replace($match[0],$parseStr,$content);//再次对包含文件进行模板分析$func($parseStr);}unset($matches);}};//替换模板中的include标签$func($content);return;}其中的$parseStr=$this->parseTemplateName($file);就是在把file=""的内容放进去解析,OK,我们再进入看看:privatefunctionparseTemplateName($templateName){$array=explode(',',$templateName);$parseStr='';foreach($arrayas$templateName){if(empty($templateName)){continue;}if(0===strpos($templateName,'$')){//支持加载变量文件名$templateName=$this->get(substr($templateName,1));}$template=$this->parseTemplateFile($templateName);if($template){//获取模板文件内容$parseStr.=file_get_contents($template);}}return$parseStr;}好的,就是这里!下面还有变量相关的代码,有兴趣的朋友可以打印看看,这里不再赘述。我不改动源码,在这段代码前面加一点就行,代码如下:$arr=explode('/',$templateName);$str='';foreach($arras$v){if(0===strpos($v,'$')){$str.=$this->get(substr($v,1)).'/';}else{$str.=$v.'/';}}$templateName=substr($str,0,-1);原理很简单,就是把file里的内容经过"/"分割,然后循环判断是否为变量,是变量这去拿变量的值,然后重新拼接在一起。这个操作会让下面源码里的变量判断失效,不过没关系,我们在这里已经转化过了。我没有去动源码,因为怕引出更多问题。测试一下,OK!一点小东西,希望能帮到需要的朋友,如果大佬们有更好的方法,或者我这里有问题,都欢迎指导和指正!

    • TP代码
    • 49阅读
    • 2022-10-22

  • ThinkPHP5中哪些小技巧可以提高性能
    ThinkPHP5中哪些小技巧可以提高性能

    今天博主来分享一下,在我们使用tp5框架如何提升部分性能,而在THINKPHP框架中,很多影响性能的地方就在于,很多请求都要进行重新加载,我们放过了想一想,如果我们能够避免这过度加载的问题,是不是就会提升部分性能呢?所以我们通过缓存来实现这一功能,一起看看吧。声明:如果服务器是linux或者是Mac,那么你需要给予权限才能操作。以下系列操作都是通过命令行形式以下方法建议,在网站稳定后再生成上传。方法如下:路由缓存生成类库映射文件生成数据表字段缓存开启请求缓存为应用或者模块生成配置缓存文件首先我们来说说如何生存路由缓存phpthinkoptimize:route如果你的应用中,定义使用了大量的路由规则,那么博主建议你可以在实际部署完成后,进行生成路由缓存文件操作,因为这样就可以免除你在打开这个应用时候路由注册的开销,从而改善路由的检测效率这里如果没有权限,就会报异常!操作成功以后,你的应用根目录runtime文件夹下就会自动生成一个route.php文件生成类库映射文件phpthinkoptimize:autoload而类库映射文件的操作,它可以提高自动加载的性能操作成功以后,你的应用根目录runtime文件夹下就会自动生成一个classmap.php文件生成数据表字段缓存phpthinkoptimize:schema如果你是希望提高对数据库的查询性能,你可以通过生成字段缓存来减少查询操作成功以后,你的应用根目录runtime文件夹下就创建schema目录,然后在该目录下面按照database.table.php的文件命名生成数据表字段缓存文件。开启请求缓存如果你的数据实时性不是很大,那么你就可以进行开启,在config.php下将request_cache改成true,默认为false状态'request_cache'=>true,一旦开启后,你的应用性能会有非常大的提高为应用或者模块生成配置缓存文件phpthinkoptimize:config默认生成应用的配置缓存文件,调用后会在runtime目录下面生成init.php文件,生成配置缓存文件后,应用目录下面的config.phpcommon.php以及tags.php不会被加载,被runtime/init.php取代。这里你值得要注意的是,如果你是在本地生成配置缓存时需要把数据库等重要的配置替换成服务器上的配置以后,再进行生成。

    • TP代码
    • 56阅读
    • 2022-10-22

  • tp5是不是手机号或者座机号
    tp5是不是手机号或者座机号

    /***是不是手机号或者固定座机*@param$val*@returnbool*/publicstaticfunctionisMobileOrPhone($val){$isMobile="/^1[3456789]{1}\d{9}$/";$isPhone="/^([0-9]{3,4}-)?[0-9]{7,8}$/";if(!preg_match($isMobile,$val)&&!preg_match($isPhone,$val)){returnfalse;}returntrue;}

    • TP代码
    • 54阅读
    • 2022-10-21

  • tp判断是否是正确的邮箱格式
    tp判断是否是正确的邮箱格式

    /***判断是否是正确的邮件格式*@param$email*@returnbool*/publicstaticfunctionisEmail($email){returnpreg_match('/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/',$email)?true:false;}

    • TP代码
    • 69阅读
    • 2022-10-21

  • tp5记录日志方法
    tp5记录日志方法

    /***[写入日志-简约]*@paramarray,string$log_content[内容]*@paramstring$keyp[文件名]*@return[type]       [description]*/functionpr_log($log_content,$keyp){//在runtime/log下生成以日期为名的文件$log_filename=RUNTIME_PATH.'log'.DS.$keyp.DS.date("Ym").DS;//判断是否是一个目录,如果不是就创建,并给读写权限!is_dir($log_filename)&&mkdir($log_filename,0755,true);if(is_array($log_content)){$log_content=json_encode($log_content,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);}file_put_contents($log_filename.date("d").'.log','['.date("Y-m-dH:i:s").']'.PHP_EOL.$log_content.PHP_EOL."--------------------------------------------------".PHP_EOL,FILE_APPEND);}

    • TP代码
    • 77阅读
    • 2022-10-21

  • tp5金额展示规则
    tp5金额展示规则

    /***金额展示规则,超过1万时以万为单位,低于1万时以千为单位,低于1千时以元为单位*@paramstring$money金额*@returnstring*@authorMichael_xu*/functionmoney_view($money){$data='0元';if(($money/10000)>1){$data=is_int($money/10000)?($money/10000).'万':rand(($money/10000),2).'万';}elseif(($money/1000)>1){$data=is_int($money/1000)?($money/1000).'千':rand(($money/1000),2).'千';}else{$data=$money.'元';}return$data;}

    • TP代码
    • 47阅读
    • 2022-10-21

站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。