
PHP
Trevor Lan
工欲善其事,必先利其器!
展开
-
PHP命名规范
1.类命名(1)使用大写字母作为词的分隔,其他的字母均使用小写。 (2)名字的首字母使用大写。 (3)不要使用下划线(“_”)。如:Student、People、Animal2.类属性命名(1)属性命名应该以字符“m”为前缀。 (2)前缀“m”后采用与类命名一致的规则。如:mValue、mString 等。3.方法命名方法的作用是执行一个动作,达到一个目的。所以方...原创 2018-05-07 13:17:49 · 2362 阅读 · 0 评论 -
PHP实现11中常见的设计模式
1 工厂模式使用工厂方法或者类生成对象,而不是在代码中直接newclass Person{ public string $age; public string $name; public function study() { } public function eat() { } public function sleep() { } public function work() {原创 2022-01-19 17:16:40 · 561 阅读 · 0 评论 -
xhprof性能优化
1 下载xhprofhttps://pecl.php.net/package/xhprof2 复制php_xhprof.dll到php/ext目录下3 配置xhprof[xhprof] extension=xhprof xhprof.output_dir=D:\program\phpstudy_pro\Extensions\xhprof4 重启nginx5 下载xhprof库文件https://github.com/phacility/xhprof6 将下载好的文件下的xh原创 2021-02-24 21:03:16 · 239 阅读 · 0 评论 -
PHP自定义函数篇
PHP自定义函数文章目录PHP自定义函数自定义函数定义函数的声明与调用变量的作用域函数的参数函数的形参与实参引用传递可变参数函数的返回值匿名函数和回调函数内部函数和有条件函数递归函数可变函数自定义函数定义自定义函数是为了实现某一功能而实现的代码块,定义一次可以多次调用,主要有四部分组成函数名参数逻辑返回值例如:function add($num1,$num2){ $num3=$num1+$num2; return $num3;}函数名:add参数:num1、nu原创 2020-12-13 15:37:05 · 2561 阅读 · 0 评论 -
PHP开发客服系统之WebSocket
引言前面的章节我们大致了解了一下开发客服的系统的思路和GatewayWorker,这一小节我们来看一下如何通过WebSocket连接到GatewayWorker。WebSocketWebSocket的监听事件open Socket.onopen 连接建立时触发 message Socket.onmessage 客户端接收服务端数据时触发 error Socket.onerror 通信发生错误时触发 close Socket.onclo..原创 2020-05-13 10:50:38 · 924 阅读 · 0 评论 -
PHP开发客服系统之GatewayWorker篇
1 引言上一小节,我们了解了一下开发客服系统的思路,所以本小节咱们就开门见山的来讲吧,这一小节我们会接触几个开发过程中常见的一个函数,其它没有讲到的可以看下官方文档的说明哦。下载地址:https://www.workerman.net/download开发文档:http://workerman.net/gatewaydoc/2 项目的目录结构下载解压后的目录如下:.├── Applications // 应用项目│ └── YourApp // 其中一个项..原创 2020-05-12 10:48:22 · 1186 阅读 · 0 评论 -
PHP开发客服系统之思路篇
引言在日常的开发中,我们总会遇到这么一个问题,那就是应用上线后我们要如何跟用户保持联系,或许我们可以用一个留言入口或反馈入口来解决,那如果我们开发的是电商应用呢,前者的解决方案可能就没那么好了,无法实时的与用户通信的话,那成交率一定会大打折扣的。此时我们就得学会对接即时通讯功能,可能有小伙伴们会说现在现成的第三方通信平台那么多,随便对接一个API就完事了,那不是so easy吗。这么说也没毛病,对接API是很容易,那么如何要自定义扩展功能的话可没那么好搞了,所以笔者想把自己开发客服系统的经验写一个系列的原创 2020-05-11 10:15:37 · 1195 阅读 · 0 评论 -
phpstorm常用快捷键指南
常用ctrl + c 复制ctrl + v 粘贴ctrl + x 剪切ctrl + shift + v 显示最近粘贴板中的内容,选择后内容插入到光标位置ctrl + d 复制当前行到下一行 或 复制选中内容到选中内容之后ctrl + y 删除当前行或选中内容所涉及的行查询ctrl + f 查找当前文件 ctrl + r 查找替换 ctrl + shift + f 当前项目中查找ctrl + shift + r 当前项目中替换 ctrl + n 类名查找ctrl + s..原创 2020-05-08 18:09:29 · 408 阅读 · 0 评论 -
PHP之封装梦网云通讯短信发送类
PHP梦网云通讯API版本<?php/** * Created by PhpStorm. * User: Trevor Lan * Date: 2020/3/20 0020 * Time: 17:40 */namespace app\v1\controller;class Message{ /** * API请求地址 */ p...原创 2020-03-20 18:06:29 · 659 阅读 · 0 评论 -
PHP之自定义阿里云客服在线访客名片
引言在做电商模块开发的同学总会遇到这么一个需求,那就是售前售后的咨询,也就是所谓的客服功能,想要自己从零开发一个客服系统那也不是不可能,只是工程比较大,开发周期会就一些。如果想要快速上线的话,那就得接入第三方平台,本次笔者以阿里云客服为例将客服系统接入自己的站点。云客服文档:https://help.aliyun.com/document_detail/68241.html?spm=a...原创 2020-02-07 16:57:29 · 964 阅读 · 0 评论 -
PHP之活动页中奖概率的换算
引言在站点的推广过程中,为了提高用户的活跃度以及引入更多的用户,有时我们会搞一些抽奖活动,比如大转盘、九宫格之类的,那么中奖概率要如何控制呢。前端只是用来展示效果,控制中奖概率的逻辑自然不能再前端搞,所以中奖控制得交给后端来做,前端通过AJAX来后端请求抽奖情况,后端通过换算后返回抽奖结果,本小节,笔者源码的形式来记录中奖概率的换算。中奖概率换算<?php// 根据中...原创 2020-01-29 20:41:11 · 255 阅读 · 0 评论 -
PHP之长短链转化思路
引言做营运推广时,链接太长不好记怎么办,有没有好办法解决呢,当然有,换一个短点的域名不就可以了么,可是有时候的链接长不是换个短域名就可以解决这么简单的,比如我们需要在链接上加上自定义的参数,而这些参数又不想直接在链接上被直接看到,那么我们就需要用到链接转换了。转换思路链接转换的思路很简单,无法就是建一张数据表来映射链接之间的关系而已,其转化流程图如下所示。如何使用1 长转短...原创 2020-01-20 10:39:25 · 858 阅读 · 0 评论 -
PHP一句话木马攻防
引言在网络世界,信息唾手可得,很难保证信息的绝对安全,只要公网可以访问,那么总会存在那么点漏洞让非法入侵者有机可乘,所以作为开发者或网络管理人员,我们要定时查看日志,备份站点数据,做好安全防范攻略。此笔记记录笔者对PHP配置的安全建议,有更好的方法也希望小伙伴们能够告知我一下,互相学习互相进步,构建安全站点。PHP小马方式1:system()<?php$cmd = $_...原创 2020-01-17 15:51:33 · 3440 阅读 · 0 评论 -
PHP之阿里号码认证服务后端取号
引言公司为了推广自己产品,有时会做大优惠活动,此时总会有薅羊毛党恶意刷单,为了防止这种情况,所以采用阿里号码认证服务,因为阿里号码认证服务整合了三大运营商特有的网关认证能力,一步验证手机号码和应用所在的手机SIM卡号码的一致性,升级短信验证码体验,并提供仅限本机操作的防控,可以有效的防止低级别的薅羊毛党。后端取号开发文档:https://help.aliyun.com/...原创 2020-01-16 14:58:53 · 782 阅读 · 0 评论 -
PHP生成用户邀请码
引言在许多APP中,为了推广经营用户常常会有分享功能,APP内的用户拥全局唯一的邀请码,将邀请码分享给自己的好友,好友按照分享的引导步骤填写邀请码,邀请人就可以获得一定的奖励,那么我们在开发过程中要如何生成一个全局唯一的邀请码呢,下面笔者提一下自己的思路,如果有更好的解决方案,欢迎各位小伙伴一起交流。邀请码的组成现在大多数的邀请码由数字和字母组成,长度由业务需求而定,在此,笔者想要的邀...原创 2020-01-14 17:44:41 · 2526 阅读 · 0 评论 -
PHP数组函数归纳表
常用函数 array — 新建一个数组 count — 计算数组中的单元数目,或对象中的属性个数 sizeof — count 的别名 in_array — 检查数组中是否存在某个值 key_exists — 别名 array_key_exists key — 从关联数组中取得键名 array_key_exists — ...原创 2019-12-28 15:34:10 · 207 阅读 · 0 评论 -
window环境RabbitMQ安装和PHP扩展amqp
目录1 安装PHP扩展ampq2 安装Erlang3 安装RabbitMQ4 总结1 安装PHP扩展ampq查看PHP信息下载ampq扩展下载地址:http://pecl.php.net/package/amqp下载解压后,里面的主要包含php_amqp.dll、rabbitmq.4.dll将php_amqp.dll复制到PHP安装目录的e...原创 2019-05-22 11:23:17 · 919 阅读 · 0 评论 -
php发送并处理短信验证码
注:笔者使用的是云片网的短信验证,所以在此做个笔记登录云片网申请签名签名申请通过后添加短信模板查看APIKEY发送验证码<?phpheader("Content-Type:text/html;charset=utf-8");// 开启sessionsession_start();// 填写申请好的APIKEY$apikey = "**...原创 2019-08-14 17:35:13 · 1173 阅读 · 0 评论 -
phpmailer发送邮件
composer安装phpmailercomposer require phpmailer/phpmailercomposer安装的可以使用类的自动加载require 'vendor/autoload.php';use PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\Exception;如果不是compo...原创 2019-05-10 09:25:15 · 936 阅读 · 0 评论 -
直接插入排序
直接插入排序直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。实现过程function insert_sort($arr){ for($i=1;$i<count($arr);$i++){ $x=$arr[$i]; for($j=$i-1;$j>=0&&$x&...原创 2019-05-09 18:08:15 · 807 阅读 · 0 评论 -
冒泡排序
冒泡排序算法原理 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 实现过程function bubble_sort($arr){...原创 2019-05-09 18:05:32 · 796 阅读 · 0 评论 -
快速排序
快速排序步骤取数组中间值 遍历数组剩余元素小于中间值的放左边,大于中间值的放右边 将左右循环如此直至不可再分 将已排好的合并第一种处理方式:<?phpfunction quick_sort($arr){ if (count($arr) <= 1){ return $arr; } // 取数组中间索引 $index...原创 2019-05-09 18:01:54 · 915 阅读 · 0 评论 -
斐波那契数列
斐波那契数列公式f(n)=f(n-1)+f(n-2)注:n>=2用递归算法实现function fibonacci($n){ if($n<=0){ exit('数列错误'); }else if($n==1||$n==2){ return 1; }else{ return fibonacci($n-1)+fibonacci($n-2);...原创 2019-05-09 17:15:02 · 1071 阅读 · 0 评论 -
PHP遍历目录
遍历目录的所有文件是开发中经常用到的案例,也是面试中最喜欢问的题目,所有在此用递归函数实现一下!<?phpheader('Content-Type: text/html; charset=utf-8');function read_dirs($path) { // 判断path是否存在 if(!file_exists($path)){ var_d...原创 2019-05-19 15:09:53 · 1790 阅读 · 0 评论 -
MySQL事务处理
目录1 事务处理注意点2 MySQL事务处理3 PHP之PDO处理事务4 PHP之MySQLi处理事务1 事务处理注意点MySQL中Innodb支持事务,而MyISAM不支持事务 事务 的ACID 特性:Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)原子性(Atomicity):事务开始...原创 2019-03-13 16:27:00 · 3609 阅读 · 0 评论 -
php之类的自动载入
注意事项其一文件名要与类名相同 其二命名空间要与项目路径相同假设我们需要写一个User类,它的目录结构如下App|-controller| |-User.php||-index.php 则我们在编写User类的时候,就需要将文件命名为User.php,并说明命名空间为controller<?phpnamespace controller;c...原创 2019-03-21 16:16:50 · 701 阅读 · 0 评论 -
初识rabbitMQ
composer安装php-amqplib配置composer.json{ "require": { "php-amqplib/php-amqplib": ">=2.6.1" }}安装composer installsend.php<?phprequire_once __DIR__ . '/vendor/autoload.php';...原创 2019-05-23 19:19:18 · 598 阅读 · 0 评论 -
php生成并处理图片验证码
php使用captcha生成验证码,其composer地址如下https://packagist.org/packages/gregwar/captchacomposer安装captchacomposer require gregwar/captcha使用案例1:生成并输出验证码<?php// 自动加载require 'vendor/autoload.php';...原创 2019-08-14 16:42:39 · 638 阅读 · 0 评论 -
php将数据保存到excel表格中
简单了解一下excel的基础知识比如第1列第1行 :A1 第2列第1行 :B1第1列第2行 :A2 第2列第2行 :B2第1列第3行 :A3 第2列第3行 :B3接下来我们用php来处理,首先先安装依赖的库文件composer安装php处理excel类库composer require phpof...原创 2019-08-15 09:16:42 · 2622 阅读 · 4 评论 -
PHP常用的关键字
类class: 定义普通类、抽象类abstract: 定义抽象类、抽象方法final: 定义最终的类、方法(只修饰类和方法,不能修饰属性)extends: 继承普通类、抽象类接口interface...原创 2019-05-28 19:23:35 · 4012 阅读 · 0 评论 -
使用redis储存session
修改php配置,让session储存到redis中方法一:修改配置文件php.inisession.save_handler = redissession.save_path ="tcp://127.0.0.1:6379"方法二:动态修改配置ini_set("session.save_handler","redis");ini_set("session.save_...原创 2019-05-23 17:30:29 · 1814 阅读 · 0 评论 -
PHP操作redis
redis缓存数据库操作$redis = new Redis();// 连接redis$redis->connect('127.0.0.1', 6379);// 选择redis数据库$redis->select(1);// 查看数据库大小$redis->dbSize();// 清空当前数据库$redis->flushDB();// 清空所有数据库...原创 2019-05-23 14:40:06 · 593 阅读 · 0 评论 -
PHP异常处理
异常处理try{ if(出现异常的条件){ throw new Exception('异常信息','异常状态码'); }}catch (Exception $e){ // 异常处理}Exception类Exception{/* 属性 */protectedstring$message;protectedint$...原创 2019-05-18 12:32:39 · 923 阅读 · 0 评论 -
PHP使用phpqrcode生成二维码
composer安装phpqrcode composer require aferrandini/phpqrcode引入自动加载类require './vendor/autoload.php';use \PHPQRCode\QRcode;简单使用<?phprequire './vendor/autoload.php';use \PHPQRCode\QRcod...原创 2019-05-18 00:19:29 · 2763 阅读 · 0 评论 -
PHP之PDO
简介PHP 数据对象(PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个具体数据库的 PDO 驱动来访问数据库服务。PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PD...原创 2019-03-07 21:55:28 · 777 阅读 · 0 评论 -
PHP之cURL
目录1 简介2 基本使用3 GET请求4 POST请求5 curl_getinfo()函数获取CURL请求输出的相关信息6 CURL函数列表1 简介PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、f...原创 2019-03-07 21:41:57 · 611 阅读 · 0 评论 -
PHP 数组
目录1 数组类型1.1 关联数组1.2 索引数组2 二维数组3 数组的基本操作3.1 数组大小3.2 数组转字符串3.3 移除数组元素3.4 数组元素的进栈与出栈3.5 合并数组3.6数组排序与打乱3.7 数组指针3.8 数组遍历4 其它常用数组函数1 数组类型1.1 关联数组关联数组的键值由字符串或字符串和数字组合。...原创 2019-01-05 14:11:20 · 591 阅读 · 1 评论 -
PHP之字符串
目录1 单引号与双引号的区别2 heredoc与nowdoc3 字符串的简易操作3.1 字符串长度3.2 字符串查找3.3 字符串替换3.4 字符串截取3.5 字符串转义3.6 改变字符串大小写3.7 字符串去首尾空格和特殊字符4 其它常用字符串函数1 单引号与双引号的区别单引号:不能识别字符串中插入的变量,需要转义的特殊字符只有反斜杠...原创 2019-01-03 13:21:19 · 640 阅读 · 0 评论 -
PHP之流程控制
目录1 图解2 顺序结构3 选择结构3.1 if选择结构3.2 if-else选择结构3.3 if-else if-else选择结构3.4 switch选择结构4 循环结构4.1 while循环4.2 do-while循环4.3 for循环4.4 foreach循环4.5 break语句4.6 continue语句1 图解...原创 2019-01-02 21:15:16 · 583 阅读 · 0 评论 -
PHP基础
目录1 注释2 数据类型2.1 字符串2.2 整型2.3 浮点型2.4 布尔型2.5 数组2.6 对象3 常量3.1 声明3.2 魔术常量4 变量4.1 定义变量4.2 超全局变量4.3 变量的范围5 运算符5.1 赋值预算符5.2 算术运算符5.3 比较运算符5.4 逻辑运算符5.5 三元运算符5.6 字...原创 2019-01-02 20:03:03 · 555 阅读 · 0 评论