
php
文章平均质量分 54
韭零后程序猿
一个90后程序猿的技术分享
展开
-
php设计模式——简单工厂模式
简单工厂是什么?简单工厂是由三部分组成:1个工厂类1个接口类或抽象类多个具体实现各部分之间的关系:接口或抽象类定义待开发功能的整体结构,需要哪些实现多个具体实现继承接口或抽象类具体实现功能。简单工厂来创建具体实现的实例进行调用关系图:简单工厂有什么用?最常用的就是用于流程控制解耦,比如输入一个参数,根据参数不同进行不同的操作。不解耦的话就是全部写在一个方法里,很乱。另一个用处就是方便扩展,防止需求三天两头变更带来的麻烦,设计好了以后要增加新的流程直接增加新的类就好了。下面以原创 2021-07-02 11:35:22 · 272 阅读 · 2 评论 -
php设计模式1——单例模式
单例模式是什么?一个类没new一次就会创建一个新的实例,而单例模式则是每次获取的都是同一个实例,在整个项目生命周期中通过单例创建的同一个类的实例都有且只有一个。为什么要使用单例模式?一些特殊的场景中我们需要每次都使用同一个实例,创建多个实例会造成额外的开支,浪费性能。比如:mysql连接,redis连接等。单例模式的使用方法:结构:4私一公私有化构造方法: 防止使用 new 创建多个实例;私有化克隆方法: 防止 clone 多个实例;私有化重建方法: 防止反序列化私有化静态属性: 防止原创 2021-07-01 10:07:18 · 241 阅读 · 0 评论 -
php设计模式学习记录——前言
设计模式是什么?设计模式不是被创造出来的,是前辈编写代码的经验的总结,是一种编码模式,追求代码的可维护性,设计模式本质作用是代码复用,目的是建立对象之间的关联,提供了一系列代码解耦的解决方案。后由GOF整理成《Design Patterns: Elements of Reusable Object-Oriented Software》一书。GOF(Gang of Four) 是 4位作者的合称,一般叫他们 4人帮 ;为什么要使用设计模式?随着项目越来越大,人员流动等原因,导致代码越来越臃肿,难以维护,原创 2021-06-30 16:12:12 · 226 阅读 · 0 评论 -
thinkphp5模型更新save和软删除delete的坑点和理解
问题一:循环更新时只有第一条数据更新成功,其它数据都不更新。官方手册中提到注意不要在一个模型实例里面做多次更新,会导致部分重复数据不再更新,正确的方式应该是先查询后更新或者使用模型类的update方法更新。只是说明了问题,但没有解释为什么,所以就没注意,导致出现这个问题。为什么会有这个问题?在Model.php模型save方法最后大概1214行// 重新记录原始数据$this->origin = $this->data;origin这个属性记录了原始数据,不管是更新还是写入原创 2021-06-28 17:37:54 · 950 阅读 · 3 评论 -
php中PSR-[0-4]代码规范学习记录
php中PSR-[0-4]代码规范学习记录1. PSR是什么?PSR是一套代码编写规范,用于约束代码风格。以前没有规范的时候大家都是按照自己的习惯来书写代码,但每个人风格不一样,你的代码在别人看来就是很不爽。而且会导致许多问题:function 函数名是否驼峰命名,花括号{}是否换行写,是该写注释呢还是不写变量名是大写还是小写,一个php文件中是一个类好还是允许有多个所以PSR-[0-4]规范就应运而生,大家都共同遵守,就没有风格差异了。PSR是由PHP-FIG这个组织发明的,FIG 是原创 2021-06-27 19:04:13 · 282 阅读 · 1 评论 -
PHP自动加载学习记录
1. 什么是自动加载?自动加载就是在实例化类的时候,PHP自动帮我们把需要用到的文件给require进来,不需要我们手动一个一个去require;自动加载可以说是现代PHP框架的核心基础,就像地基一样,像Laravel,thinkphp,yii2等框架都是基于自动加载实现的文件自动载入。2. 如何实现?1. __autoload()方法实现自动加载index.php<?phpfunction __autoload($classname){ require $className . '.原创 2021-06-26 14:41:58 · 139 阅读 · 2 评论 -
namespace命名空间学习
1. namespace是什么?命名空间是namespace是翻译,作用是防止类名或函数名重复,命名重复会导致报错。以前没有命名空间的时候只能人为去防止重复,但项目上了一定规模难以避免这个问题,因此,在php5.3版本推出了namespace。2. namespace的简单使用使用比较简单,下面举个例子1. 先是不用namespace的方式Foo.php<?phpclass Test { public static function index(){ echo 'hello wor原创 2021-06-26 10:29:35 · 632 阅读 · 0 评论 -
PHP处理emoji表情
字符串包含emoji表情 , 在使用MySQL直接存储的时候 , 有些特殊字符会保存失败 , 比如保存用户昵称 , 有些用户昵称带有emoji表情 , 然后在保存的时候 , 会出错 , 通常这种情况的处理办法就是 , 直接将emoji表情过滤掉 ; 也有时候需要保留emoji表情 , 那么就只能转义保存 , 取出来的时候 , 再转回来 , 类似于编码和解码!1.过滤emoji表情/** *...转载 2019-01-14 10:25:35 · 1050 阅读 · 1 评论 -
TP5使用phpexce上传导入csv文件
前端上传使用layui.upload组件,具体参考Layui手册php://主逻辑//限制上传表格类型$file_type = $_FILES['excel_import']['type'];if ($file_type!='application/vnd.ms-excel') { return [RESULT_ERROR,'上传失败,只能上传excel表格!'];}if (i...原创 2019-01-02 14:33:55 · 1313 阅读 · 0 评论 -
关于thinkphp5自定义标签库解析的问题
今天tp5的自定义标签库着实坑了我一把,原因有两点:1.预加载标签是有缓存的,你设置了预加载标签库,要删除缓存后重新刷新才有效,否则无效,这导致我调试的时候不知道自己到底设置对了没有2.我一直以为配置是会自动继承父级的配置的,也就是说,在模块中我只需要写好不同的配置就行,然后事实上一位数组的配置确实是这样,但是二位数组的时候第二层数组是会直接覆盖第一层数组的,举个栗子:猜猜结果是什么,对了...原创 2018-11-14 10:26:49 · 4158 阅读 · 5 评论 -
记一次后台被入侵的事件及反思
前几天后台被入侵,造成服务器瘫痪数个小时,虽然数据都没有丢失,但是也着实吓出一身汗,下面还原整个事件晚上10点左右,有人反应进不去app了,我还以为是玩笑,结果是服务器文件被删除了,赶紧停服务查看,config表被清空,菜单表被清空,查看日志发现有人使用admin账号在后台为所欲为,但是此人没有登录的日志,先不管,先恢复数据再说好在被删除的数据都有备份,直接恢复了,业务数据虽然被删除了一部分,...原创 2018-11-14 10:13:32 · 2486 阅读 · 0 评论 -
PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法
方法一:前面加空格;$objActSheet->setCellValue('A1', ' '.'330602198804224688');方法二:$objActSheet->setCellValueExplicit('A1', '330602198804224688', PHPExcel_Cell_DataType::TYPE_STRING);方法三:$objAct原创 2018-01-29 15:42:40 · 9347 阅读 · 0 评论 -
thinkphp上传多张图片只能上传一张的问题
最近用tp上传图片的时候遇到这个问题,同时上传两张图片,只有一张能传上去,经排查发现是两次都使用了相同文件名导致,原因是保存文件名规则是已经调用的函数,类似time()._.mt_rand()这样,在一次请求中这个值始终是不变的,要改成未调用的函数名,类似time,最终是这样'saveName' => ["getRandom",[10]],,自定义函数传入参数解决了问题原创 2017-09-15 09:46:29 · 2684 阅读 · 0 评论 -
PHP中使用Luhn算法校验信用卡及借记卡卡号
Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码。我们以数字“7992739871”为例,计算其校验位:从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);把得到的数字加在一起(本例中得到67);将数字的和取模10(本例中得到7),再用10去减(本例中得转载 2017-06-22 14:19:33 · 1268 阅读 · 0 评论 -
php导出EXCEL表格
很多时候,数据库中的数据需要导出成excel,以下是最简便的方法,不用导出excel的类,即使功能简单,但是对于没有复杂需求的项目“见效快”<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=xls_region.xls"); $cfg_dbhost = 'local原创 2017-07-11 13:35:30 · 460 阅读 · 0 评论