首页
4K壁纸
直播
统计分析
友情链接
搜索
1
#1031 – TABLE STORAGE ENGINE FOR ” DOESN’T HAVE THIS OPTION解决方法
1,250 阅读
2
让浏览器不显示 https 页面中 http 请求警报 http-equiv=”Content-Security-Policy” content=”upgrade-insecure-requests”
961 阅读
3
报错代码:ERROR 1227 (42000)-解决办法
749 阅读
4
微信个人商户号养号建议
591 阅读
5
解决移动端position:fixed随软键盘移动的问题
566 阅读
Php
Mysql
Linux
Reids
Java
Python
常用笔记
学习
乱七八糟
Search
标签搜索
php
Mysql
千卡云支付
Linux
redis
千卡云
千卡易支付
Nginx
function
JS
session
shell
JSON
跨域
支付宝
CentOS
Apache
支付
composer
Array
蓝科迪梦
累计撰写
106
篇文章
累计收到
0
条评论
首页
栏目
Php
Mysql
Linux
Reids
Java
Python
常用笔记
学习
乱七八糟
页面
4K壁纸
直播
统计分析
友情链接
搜索到
106
篇与
蓝科迪梦 发布的内容
2022-10-24
支付宝网关参数
复制代码 @Component @Data public class AliPayConfig { // 支付宝网关 @Value("${aliPay.serverUrl}") private String serverUrl; //appId @Value("${aliPay.appId}") private String appId; //私钥 @Value("${aliPay.privateKey}") private String privateKey; //参数返回格式,只支持 JSON(固定)。 public static String FORMAT = "json"; //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2。 public static String SIGN_TYPE = "RSA2"; // 字符编码格式 public static String CHARSET = "UTF-8"; //转账成功状态码 public static String SUCCESS_CODE = "10000"; //收款方标识类型 ALIPAY_USER_ID:支付宝会员的用户 ID,可通过 获取会员信息 能力获取。ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式。 public static String IDENTITY_TYPE = "ALIPAY_LOGONID"; //应用证书路径 public static String APP_CERT_PATH = ClassLoader.getSystemResource("aliPay/appCertPublicKey.crt").getPath(); //公钥证书路径 public static String PUBLIC_CERT_PATH = ClassLoader.getSystemResource("aliPay/alipayCertPublicKey_RSA2.crt").getPath(); //支付宝根证书路径 public static String ROOT_CERT_PATH = ClassLoader.getSystemResource("aliPay/alipayRootCert.crt").getPath();
2022年10月24日
311 阅读
0 评论
0 点赞
2022-10-24
关于支付宝获取私钥和公钥-千卡云
支付宝官网:店家我的商家服务—在页面的下方找到——>签约管理—>找打 移动支付—–>点击下载集成文档—>跳到新的页面,在页面下方—>找到下载开发包,下载移动支付即可。然后解压出来之后一般会得到三个文件夹。 这个时候要打开文件名为: 支付宝钱包支付接口开发包2.0标准版的文件。打开之后有一个Demo 文件。里面会有三个文件 夹:第一个 openssl; 第二个 服务端 Demo,第三个 客户端demo. 这个时候,我们需要关心的是 openssl 文件与 客户端 Demo 的文件。 在第三个Demo文件中有iOS版与Android 版的Demo.但是你要部署运行的时候,会发现不能运行成功。在项目主文件里面这样一段代码: //商户PIDpublic static final String PARTNER = ""; //商户收款账号public static final String SELLER = ""; //商户私钥,pkcs8格式public static final String RSA_PRIVATE = ""; //支付宝公钥public static final String RSA_PUBLIC = ""; 因为这些,都是需要根据商户注册的信息来填写的。所以就算下下载了Demo,也没有用。下面讲的就是如何获取私钥与支付宝公钥。 还记得刚刚我们加压之后的openssl文件嘛?获取私钥与公钥的方法就在里面: 首先打开openssl文件:以下是文件打开顺序: openssl–>bin –> 双击 openssl.exe文件。这个时候会出现一个命令框:(首先要说明的是这个文件是在Windows系统下打开的)要是苹果系统好像不行.接着继续往下说: 打开命令框后:输入第一行命令 ,生成私钥,如下: genrsa -out rsa_private_key.pem 1024 按回车键,接着输入第二行命令,生成公钥: rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 按回车键,接着输入第三行命令,将RSA私钥转换成PKCS8格式 pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt 执行完这三行命令后,就生成了两个以:.pem 结尾的文件。这就是我们生成的公钥与私钥.文件位置就在: bin 目录下。当然我们打不开这 两个文件。但是我们可以复制一份到桌面,改成Txt文件打开即可。因为我们需要的只是里面的字符串,记住当我们引用这两个长的字符串的时候,需要注意的 是:字符串,不能包括,换行,空格,以及其他误加的字符。所以复制的时候一定要小心。 当然私钥就是我们需要的私钥了,如何获得支付宝公钥呢:回到支付宝首先,首先登录, 一: 点击“查看PID|KEY”,在新打开的页面(https://b.alipay.com/order/pidAndKey.htm ),可查看到签约支付宝账号、合作者身份ID(PID. 二:输入支付密码,查询key、支付宝公钥。 三:上传RSA公钥,在“合作伙伴密钥管理”下,点击“RSA加密”后的“添加密钥”,把自己的公钥复制进去。注意不能有空格,换 行之类的。 四:点击确认上传,若是提示上传成功。则就是成功。 这个时候就可查看支付宝公钥了。 至此,将对应的私钥与公钥填到相应位置我们的Demo 就可一运行了。然后集成到项目中即可。
2022年10月24日
404 阅读
0 评论
0 点赞
2022-10-21
sessionStorage使用
sessionStorage在MDN里的描述是这样的: sessionStorage 属性允许你访问一个 session Storage 对象。 它与 localStorage 相似,不同之处在于 localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在页面会话结束时会被清除。 页面会话在浏览器打开期间一直保持,并且重新加载或恢复页面仍会保持原来的页面会话。 sessionStorage的使用方法是: // 保存数据到sessionStorage sessionStorage.setItem('key', 'value'); // 从sessionStorage获取数据 var data = sessionStorage.getItem('key'); // 从sessionStorage删除保存的数据 sessionStorage.removeItem('key'); // 从sessionStorage删除所有保存的数据 sessionStorage.clear(); sessionStorage的特点是,当用户打开一个标签页,实际上就是建立了一个session会话,在这个标签页里,url发生跳转, sessionStorage实际上还是保存着,并不会消失,当标签页关闭的时候,数据才会消失。
2022年10月21日
399 阅读
0 评论
0 点赞
2022-10-21
Nginx允许跨域访问的配置问题
跨域问题: has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://dev2.lystrong.cn' is therefore not allowed access. 为跨域访问问题,可以在静态资源服务器A 配置允许跨域请求,nginx在配置中对应的location下添加上如下的设置: add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; 重启nginx
2022年10月21日
466 阅读
0 评论
0 点赞
2022-10-08
解决移动端position:fixed随软键盘移动的问题
在安卓手机上面会出现position:fixed固定定位的问题,当用户点击搜索框的时候,手机的虚拟键盘会把固定在底部的div顶到手机虚拟键盘的正上方,查询后发现是虚拟键盘调用时浏览器高度被压缩了,根据这个特性我们可以通过监听浏览器窗口的高度改变元素的定位或者显示隐藏。 var windowInnerHeight = window.innerHeight; //获取当前浏览器窗口高度 $(window).resize(function(){ if(window.innerHeight < windowInnerHeight){ $('定位按钮').hide(); }else{ $('定位按钮').show(); } });
2022年10月08日
566 阅读
0 评论
0 点赞
2022-10-08
解决JSON.stringify在使用循环体内部变量报错的问题
var source = {name:666}; source.o = source; 这里直接用JSON.stringify(source)打印会报错:Converting circular structure to JSON at Object.stringify,正常需要删除对象的循环引用,这种错误的编码方式,但是有时候我们想打印下对象里都有什么,所以就有了一下方式: deepClone = function(source) { if (!source || typeof source !== 'object') { throw new Error('error arguments', 'shallowClone') } var targetObj = this.testArray(source) ? [] : {} let iii = 0; for (var keys in source) { console.log('\r\n'+keys); targetObj[keys] = source[keys]; if(iii >= 50 ){ //防止对象过多死循环 导致栈溢出 break; } iii++; } return targetObj } console.log(deepClone(source));
2022年10月08日
287 阅读
0 评论
0 点赞
2022-09-25
js前端和php后端对url编解码处理方式不一致的问题
问题:php的解码方式是urldecode,前端的编码方式有escape,encodeURI,encodeURIComponent这三种,escape出来的url,php可以正常解析出来,但是escape不支持ES6,其他两种方式php不能解析正确 解决方法一,根据情况转: URI部分用encodeURI,参数部分用encodeURIComponent,这样才是相对完美的编码方式。 比如`https://example.com/?next=abc...`,得到的结果分别是: encodeURI(`https://example.com/?next=abc...`): "https://example.com/?next=abc.com/def&encoding=utf-8" encodeURIComponent(`https://example.com/?next=abc...`): "https%3A%2F%2Fexample.com%2F%3Fnext%3Dabc.com%2Fdef%26encoding%3Dutf-8" encodeURI(https://example.com/?next=${encodeURIComponent('abc.com/def')}&encoding=${encodeURIComponent('utf-8')}): "https://example.com/?next=abc.com%252Fdef&encoding=utf-8" 解决方法二,base64: json_encode()用eval()还原 base64_decode()用base64_encode()还原 解决方法三,最简单的方法,前后端都不使用转义!
2022年09月25日
244 阅读
0 评论
0 点赞
2022-08-29
利用execCommand复制文本
//复制粘贴 var text = $(this).text(); console.log('text:'+text); var target = document.createElement("textarea"); target.style.position = "absolute"; target.style.left = "-9999px"; target.style.top = "0"; target.innerHTML = text; document.body.appendChild(target); target.select(); // 选中文本 document.execCommand("copy"); // 执行浏览器复制命令 layer.msg("复制成功");
2022年08月29日
300 阅读
0 评论
0 点赞
2022-08-22
layer关闭弹窗(多种关闭弹窗方法)
layer.close(index) - 关闭特定层 //当你想关闭当前页的某个层时 var index = layer.open(); var index = layer.alert(); var index = layer.load(); var index = layer.tips(); //正如你看到的,每一种弹层调用方式,都会返回一个index layer.close(index); //此时你只需要把获得的index,轻轻地赋予layer.close即可 //如果你想关闭最新弹出的层,直接获取layer.index即可 layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的 //当你在iframe页面关闭自身时 var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引 parent.layer.close(index); //再执行关闭 layer.closeAll(type) - 关闭所有层 如果你很懒,你不想去获取index你只想关闭。那么closeAll真的可以帮上你。如果你不指向层类型的话,它会销毁掉当前页所有的layer层。当然,如果你只想关闭某个类型的层,那么你可以 layer.closeAll(); //疯狂模式,关闭所有层 layer.closeAll('dialog'); //关闭信息框 layer.closeAll('page'); //关闭所有页面层 layer.closeAll('iframe'); //关闭所有的iframe层 layer.closeAll('loading'); //关闭加载层 layer.closeAll('tips'); //关闭所有的tips层
2022年08月22日
397 阅读
0 评论
0 点赞
2022-08-21
redis中hget方法传参规范问题
改node.js中socket遇到的问题var socket.uid = 1; clientRedis.hget( "LiveConnect_pull",socket.uid); 报错:This is converted to "[object Object]" by using .toString() now and will return an error from v.3.0 on.改成以下就好了:clientRedis.hget( "LiveConnect_pull",''+socket.uid+'');原因很明显啦,传参要求格式必须是string
2022年08月21日
375 阅读
0 评论
0 点赞
2022-08-21
JS控制文本框禁止输入特殊字符
JS控制不能输入空格 <input type="text" onkeyup="this.value=this.value.replace(//s/g'')" onpaste="this.value=this.value.replace(//s/g'')" > JS 控制不能输入特殊字符 <input type="text" onkeyup="this.value=this.value.replace(/[^u4e00-u9fa5w]/g'');"> JS 控制文本框只能输入数字 <input type="text" onkeyup="value=value.replace(/[^0-9]/g'')" onpaste="value=value.replace(/[^0-9]/g'')" oncontextmenu = "value=value.replace(/[^0-9]/g'')"> JS 控制文本框只能输入数字、小数点 <input onkeyup="value=value.replace(/[^\0-9\.]/g'')" onpaste="value=value.replace(/[^\0-9\.]/g'')" oncontextmenu = "value=value.replace(/[^\0-9\.]/g'')"> JS 控制文本框只能输入英文 <input onkeyup="value=value.replace(/[^\a-\z\A-\Z]/g'')" onpaste="value=value.replace(/[^\a-\z\A-\Z]/g'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z]/g'')"> JS 控制文本框只能输入英文、数字 <input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9]/g'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9]/g'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9]/g'')"> JS 控制文本框只能输入中文 <input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g'')" onpaste="value=value.replace(/[^\u4E00-\u9FA5]/g'')" oncontextmenu = "value=value.replace(/[^\u4E00-\u9FA5]/g'')"> JS 控制文本框只能输入中文、英文、数字 <input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g'')"> JS 控制文本框只能输入中文、英文、数字、空格 <input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g'')"> JS 控制文本框只能输入中文、英文、数字、小数点 <input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g'')"> 输入之后立即清除: //验证输入框内不能输入特殊字符输入就立刻清除 function cleanSpelChar(th){ if(/["'<>%;)(&+]/.test(th.value)){ $(th).val(th.value.replace(/["'<>%;)(&+]/"")); } } 如果是特殊字符,禁止输入: //验证输入框内不能输入特殊字符,输入前先作判断 function processSpelChar() { var code; var character; if (document.all) { code = window.event.keyCode; } else { code = arguments.callee.caller.arguments[0].which; } var character = String.fromCharCode(code); var txt = new RegExp(/["'<>%;)(&+]/); if (txt.test(character)) { if (document.all) { window.event.returnValue = false; } else { arguments.callee.caller.arguments[0].preventDefault(); } } } JS替换英文特殊字符 `~!@#$%^&*()_+-=;':"\|./<>? var subject= document.getElementById("subject").value; subject = subject.replace(/[\-\_\\.\!\|\~\`\(\)\#\@\%\-\+\=\/\'\$\%\^\&\*\{\}\:\;\"\L\<\>\?\\]/g ''); alert(subject);
2022年08月21日
407 阅读
0 评论
0 点赞
2022-08-13
微信个人商户号养号建议
2022年6月,是大量支付牌照临期年审的日子,所以本月都有支付机构都非常难熬,也同时影响大量商户。近期微信支付风控可以用变态来形容,一个投诉基本上就风控,不管什么理由,什么类型,都先风控了再说。鉴于这种流氓式的风控方式,对应新开通的微信商户,我们建议先养号,再收款。以下几种类型特别要养号:1、微信个人号收款被限制过的2、身份证申请过微信支付被风控过的3、企业法人申请过微信支付被风控过的4、老年人身份证从来没用过微信申请的微信商户养号建议:新开通微信支付后,不要立即收款,放2天,然后每天缓慢增加订单数量,要真实交易,不能自己付给自己,凌晨2-6点不能有收款。养号期间不能有投诉,养一段时间再正式收款,有条件建议多开几个支付轮流养3个月后再进行收款。养号完成后使用建议:1、每天随时观察微信小程序:微信支付商家助手,如有交易拦截,立即停止此账户收款,至少停用7天。2、网站一定要留客服手机和微信,减少用户投诉几率。3、如遇到投诉,24小时内必须处理。
2022年08月13日
591 阅读
0 评论
3 点赞
2022-08-11
git常用命令
初始化当前目录 git init 将指定文件加入缓存区 -A表示所有 git add -A 克隆远程项目 git clone +项目地址 克隆指定分支 git clone -b +分支名 +项目地址 例如 git clone -b "2019年11月11日10时55分00秒" "https://gitee.com/bufanyun/www.git" 标记更新内容 git commit -m "标记内容" 关联本地仓库和远程仓库 首次需要 git remote add origin push代码到git项目 -f表示强制操作不需要更新本地 git push origin master -f push代码到git项目指定分支 web是master下的一个分支 git push origin master:web -f git拉取远程分支到本地,同步 git pull origin master ################新增项目时还需要更新xshell密匙或者关联账户身份 1.更新xshell密匙 ssh-keygen -t rsa -C "mengshuai@gitee.com" 然后一直回车直到结束 生成成功以后将/root/.ssh/id_rsa.pub文件下的秘钥复制到码云后台ssh秘钥添加的地方 关键远程仓库地址时应该使用shh方式, 2.关联账户身份 git config --global user.name "133814250" git config --global user.email "133814250@qq.com" # 然后输入一次用户密码,再根据自己的需求执行下面的任意一条命令 1、设置记住密码(默认15分钟): git config --global credential.helper cache 2、如果想自己设置时间,可以这样做: git config credential.helper 'cache --timeout=3600' 这样就设置一个小时之后失效 3、长期存储密码: git config --global credential.helper store 4、增加远程地址的时候带上密码也是可以的。(推荐) http://yourname:password@git.oschina.net/name/project.git 如果之前已有关联git信息,还需要 git remote rm origin #清空之前的设置仓库权限信息 git remote -v git remote add origin git@gitee.com:bufanyun/ml.git #关联 git push origin master -f 克隆远程库到本地 git clone -b "2019年11月11日10时55分00秒" "https://gitee.com/bufanyun/www.git" 分支名 远程仓库地址 ##############其他 新建分支推送项目:https://blog.csdn.net/weixin_46654114/article/details/122612824 如何忽略掉特定文件,push到github上 如果不是首次push,服务器会缓存之前.gitignore文件的信息,修改完.gitignore后需要执行:git rm -r --cached . 确保文件.gitignore存在,如果不存在创建即可 然后在文件中加入想要忽略的文件即可 举个例子: .idea .vs/ .htaccess */.DS_Store .DS_Store composer.lock .php_cs.cache .env vendor php_errors.log composer.phar 404.html index.html config/.config.php config/.config.php.bak public/ssr-download/ public/images/*.* public/theme/material/css/images/bg storage/framework/smarty/cache/* storage/framework/smarty/compile/* storage/framework/views/* storage/*.* /storage/traffic_notified/ !storage/framework/smarty/cache/.gitkeep !storage/framework/smarty/compile/.gitkeep !storage/framework/views/.gitkeep .user.ini public/.user.ini # 忽略本地某一文件更改,不提交 比如有一个文件: config.php 里面有一些本地开发环境参数,不需要提交 git update-index --assume-unchanged config.php 执行 git status 就看不到config.php 文件了 如果需要提交config.php文件了,执行: git update-index --no-assume-unchanged config.php 执行 git status 就可以看到config.php了,这时就可以提交了 gitee的直接拉取仓库子文件链接格式 如:https://gitee.com/bufanyun/live-push-pull/raw/master/manifest.json https://gitee.com/bufanyun/仓库名称/raw/分支名称/需要拉取的文件路径+名称
2022年08月11日
286 阅读
0 评论
0 点赞
2022-07-29
phpstorm快捷键
常用快捷键 快捷键作用 Ctrl + C复制 Ctrl + V粘贴 Ctrl + A全选 Ctrl + Z撤回 Ctrl + Shift + Z前进 Ctrl + 空格代码提示 Ctrl+P方法参数提示,显示默认参数 Ctrl+J自动代码提示,自动补全 Ctrl + Y/Ctrl + X删除光标所在行 Ctrl + D复制光标所在行 Ctrl + Alt + L格式化代码 Ctrl + Alt + I自动缩进 Ctrl + /行注释 Ctrl + Shift + /块注释 Ctrl + B/Ctrl+单击函数追踪 Ctrl + G跳转指定行数 Ctrl + W增加选中范围 Ctrl + F/Ctrl + R查找/替换 Ctrl + Shift + F/Ctrl + Shift + R在项目或指定目录查找/替换 双击Shift搜索全部 Ctrl + E列出最近打开的文件 Tab + Shift取消所选内容缩进 Ctrl + Shift + -收缩类 Ctrl + Shift + +展开类 F4查找变量来源 不常用快捷键 快捷键作用 Ctrl + Shift + U切换大小写 Ctrl + Shift + V粘贴板,选择需要粘贴的最近内容 Shift + Ctrl+ C复制当前文件所在路径 Ctrl + J显示输入常用的代码片段 Ctrl + Alt + F12查看当前文件路径,双击直接在文件夹显示该文件位置 Ctrl + .在没有调用输入法的时候,折叠当前方法的代码 Alt + F12打开命令行栏 Alt+上/下箭头跳转到上/下一个方法 Ctrl + Tab /Ctrl+ Shift +Tab切换工具窗口或者打开文件 Alt + Shift + C查找修改的文件,最近变更历史 搜索快捷键 快捷键作用 Ctrl+F/ Ctrl+R查找/替换 Ctrl + Shift + F/Ctrl + Shift + R在项目或指定目录查找/替换 Ctrl + N类名查找 Ctrl + Shift + N文件名查找 Ctrl + Shift + Alt+ N函数名查找 双击Shift搜索全部,支持类名、文件名,方法名等的单独搜索 Ctrl + B/Ctr l+ 单击方法变量快速查找 Alt + F7/Ctrl + Alt + F7查看函数/类在哪里调用 菜单快捷键 快捷键作用 Ctrl+Alt+S打开setting 自定义快捷键 File->Setting 更换主题和字体 1.File – settings – Editor – Colors And Fonts; 2.在右侧窗口中选择Scheme name : 选择一个自己喜欢的主题,点击旁边的SaveAs按钮,保存名称自定义即可; 3.然后点击Font,在右侧窗口中Editor Font下边设置字体、大小以及行高;完成之后点击右下角Apply – OK; 更换PHP版本 File–>Setting->Languages & Frameworks–>PHP–>右侧窗口–>PHP language level:–>Apply–>OK 显示行号 搜索show line number 可自定义一个快捷键 File–>Setting->Keymap–>右侧窗口–>Main menu–>View–>Active Editor–>show line number 自定义语法高亮 File–>Setting–>Editor > Colors&Fonts。 关闭自动保存 File --> Setting --> Editor --> General --> Editor Tabs --> Mark modified tabs with asterisk --> 将前面的复选框选中 File --> Appearance & Behavior --> System Settings --> 找到以下两个选项,将其前面复选框选中 ; (1) Save files on frame deactivation; (2) Save files automatically if application is idle for …
2022年07月29日
223 阅读
0 评论
0 点赞
2022-07-29
php判断继承类有没有对指定方法重写
use ReflectionClass; public function __construct() { $reflectClass = new ReflectionClass($this); //必须重写的方法 $requiredOverwriteMethods = [ 'isCurrentLimit', 'genCacheKey', 'really', ]; foreach ($requiredOverwriteMethods as $method) { if ($reflectClass->getMethod($method)->getDeclaringClass()->getName() !== $reflectClass->getName()) { throw new \Exception('继承:'.__CLASS__.'的子类必须重写方法:'.$method); } } unset($method); }
2022年07月29日
337 阅读
0 评论
0 点赞
1
...
6
7
8