php技巧

如何在PHP环境中使用ProtoBuf数据格式

2020-06-17
前言   RPC是google公司主导的一款RPC框架,并使用protobuf作为数据传输格式,伴随gRPC框架的成熟及使用人群的增加,对于底层使用的数据格式protobuf也被越来越受到重视,而对于PHP生态而言,相关ProtoBuf介绍文档及使用资料比较少,故此写简文希望能帮助到一些有需要的同学.   ProtoBuf (Google Protocol Buffer)是由google公司用于数据交换的序列结构化数据格式,具有跨平台.跨语言.可扩展特性,类型于常用的XML及JSON,但具有更小

深入分析PHP设计模式

2020-06-14
1.单例模式 一个类,只能允许有一个对象存在 <?php class test{ protected function __construct(){ } public static function getInstance(){ $_test = new test(); return $_test; } } $test = test::getInstance(); var_dump($test); ?> 2.工厂模式 工厂模式,顾名思义,如同工厂一样,你把原材料放入工厂中,出来的是成品,而你并

详解php反序列化

2020-06-09
1  前言 最近也是在复习之前学过的内容,感觉对PHP反序列化的理解更加深了,所以在此总结一下 2  serialize()函数 "所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示.序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字." 一开始看这个概念可能有些懵,但之后也是慢慢理解了 在程序执行结束时,内存数据便会立即销毁,变量所储存的数据便是内存数据,而文件.数据库是"持久数据",因此PHP序列

实例讲解PHP表单

2020-06-08
表单处理 GET vs. POST 1  GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...)).此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据. 2  GET 和 POST 被视作 $_GET 和 $_POST.它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数.类或文件访问它们. 3  传递方式 $_GET 是通过 U

如何在PHP中使用数组

2020-06-07
1.PHP如何获取数组里元素的个数实例 在 PHP 中,使用 count()函数对数组中的元素个数进行统计. 例如,使用 count()函数统计数组元素的个数,示例代码如下: <?php header("Content-Type:text/html; charset=utf-8"); $arr = array("php","thinkphp","laravel"); echo count($arr); 输出结果为: 3

PHP类的自动加载与命名空间用法实例分析

2020-06-05
本文实例讲述了PHP类的自动加载与命名空间用法.分享给大家供大家参考,具体如下: 作为一名合格的程序员,必定会有一个从面向过程编程到面向对象编程的转化过程,在这个过程中诸如命名空间,类,继承,接口,类自动加载等等都是需要我们去掌握的,之前对这些概念都不是很熟悉,只是能够基础地使用,在这里系统的记录一下关于命名空间与类的自动加载知识. 类的自动加载 什么是自动加载类? ? ? 从字面意思上就可以大概知道,当调用一个当前页面未定义的类的时候能够自动加载. 相信如果你之前了解过php的魔术方法的话,肯

PHP标准库 (SPL)——Countable用法示例

2020-06-02
本文实例讲述了PHP标准库 (SPL)--Countable用法.分享给大家供大家参考,具体如下: 类实现 Countable 可被用于 count() 函数. 接口摘要 Countable { /* 方法 */ abstract public count ( void ) : int } 当一个类实现了Countable接口,实现了接口中的count方法,即可直接使用count(Object)的到count方法返回的值. 例: class MyCount { private $num; pub

PHP正则表达式函数preg_replace用法实例分析

2020-06-02
本文实例讲述了PHP正则表达式函数preg_replace用法.分享给大家供大家参考,具体如下: preg_replace 执行一个正则表达式的搜索和替换 语法:preg_replace (pattern ,replacement ,subject,limit,count ) 参数 描述 pattern 正则表达式(字符串或字符串数组) replacement 用于替换的字符串或字符串数组 subject 要进行搜索和替换的字符串或字符串数组. limit 可选.每个模式在每个subject上进

PHP数组基本用法与知识点总结

2020-05-31
本文实例讲述了PHP数组基本用法与知识点.分享给大家供大家参考,具体如下: 初识数组 概念: 数组就是一个可以存储一组或一系列数值的变量 数组组成: 数组是由一个或多个数组元素组成的 数组元素: 一每个数组由键(Key)和值(Value)构成 键: "键"为元素的是被名称,也被称为数组下标 值: "值"为元素的内容 映射:"键"和"值"之间存在一种对应关系,称之为映射 类型划分: 根据键的数据类型,可以将数组划分为索引数组和关

PHP与Web页面交互操作实例分析

2020-05-30
本文实例讲述了PHP与Web页面交互操作.分享给大家供大家参考,具体如下: Web交互 1.Web表单交互 当表单的method属性提交方式为POST时,浏览器发送POST请求 当表单的method属性提交方式为GET时,浏览器发送GET请求 当PHP收到来自浏览器提交的数据后,会自动保存到超全局变量中. 超全局变量是PHP预定义好的变量,可以再PHP脚本的任何位置使用 常见的超全局变量数组变量有$ _POST.$_GET等 通过POST方式提交的数据会保存到$_POST中 通过GET方式提交的

php生成短网址/短链接原理和用法实例分析

2020-05-27
本文实例讲述了php生成短网址/短链接原理和用法.分享给大家供大家参考,具体如下: 需求 在我们的项目当中,如果需要更好传播我们的活动链接,但是链接太长1来是不美观,2来是太过于"笨重",例如拼多多,淘宝联盟,他们的推广链接都是有短链接的,还有新浪微博. 但是,这些始终都是别人的,我们调用别人的API进行生成,不稳定,所以可以自己做一个,注册一个稍微短一些的域名就行. 生成源码api.php <?php header("Content-type:application/

PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】

2020-05-27
本文实例讲述了PHP实现图片防盗链破解操作.分享给大家供大家参考,具体如下: 很多小伙伴的博客,网站都是用图床来实现的,那么现在很多稳定的图床接口都被做了防盗链处理,例如百度.阿里.京东.小米.搜狗等. 所以我们应该怎么避开防盗链直接使用图片呢? 1 防盗的原理是什么? 当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息.cookie等内容,那么有一个叫referer的东东,也包含在这里面. referer是干啥用的呢? 它就是告诉服务器,这

php实现的证件照换底色功能示例【人像抠图/换背景图】

2020-05-26
本文实例讲述了php实现的证件照换底色功能.分享给大家供大家参考,具体如下: <?php //背景图和原图需要保持宽高要保持一样,这里的示例原图用的是蓝色背景 init(); function init(){ $old = '1.png'; $new = '2.png'; //创建一个png透明图 $img = imagecreatefrompng($old); setpng($img,$old,$new); } function setpng($imgid,$filename,$savenam

PHP实现本地图片转base64格式并上传

2020-05-26
我们在开发系统时,处理图片上传是不可避免的,例如使用thinkphp的肯定很熟悉import("@.ORG.UploadFile");的上传方式,今天我们来讲一个使用html5 base64上传图片的方法. 主要是用到html5 FileReader的接口,既然是html5的,所支持的浏览器我就不多说啦 可以大概的讲一下思路,其实也挺简单.选择了图片之后,js会先把已选的图片转化为base64格式,然后通过ajax上传到服务器端,服务器端再转化为图片,进行储存的一个过程. 咱们先看看前

php生成随机数/生成随机字符串的方法小结【5种方法】

2020-05-26
本文实例讲述了php生成随机数/生成随机字符串的方法.分享给大家供大家参考,具体如下: 有时候我们的项目需要生成随机数,但是又不想那么麻烦,那么我们可以使用下面这5种方法生成. 第一种:mt_rand() <?php function GetRandStr($length){ //字符组合 $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $len = strlen($str)-1; $randstr

php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】

2020-05-26
本文实例讲述了php+js实现的拖动滑块验证码验证表单操作.分享给大家供大家参考,具体如下: 现在很多网站,比如淘宝,京东等都改用使用极验拖动验证码实现登录,这种方式比传统的验证码方式有更好的体验,减少用户输入的错误,也同样能起到防盗刷的功能.现在很多极验都是第三方的,也很多都是收费的.今天在这里给大家分享自己用原生php实现的一个极验的代码.用原生php的好处就是以后你要嵌套到什么框架,可以直接用核心代码,改一改就好了. 极验拖动动画图 代码文件截图 代码实现 html文件 <!DOCTYPE

php7 错误处理机制修改实例分析

2020-05-25
本文实例讲述了php7 错误处理机制修改.分享给大家供大家参考,具体如下: 一.现在有两个异常类:Exception and Error. PHP7现在有两个异常类,Exception and Error.这两个类都实现了一个新的接口:Throwable.在您的异常处理代码中,类型暗示可能需要调整下. 二.一些致命错误和可恢复致命错误改为抛出Error对象. 有一些致命错误和可恢复致命错误现在改为报出Error对象.Error对象是和Exception独立的,它们无法被常规的try/catch扑

php7 list()、session及其他模块的修改实例分析

2020-05-24
本文实例讲述了php7 list().session及其他模块的修改.分享给大家供大家参考,具体如下: 一.list()不再按照相反的顺序赋值 list($array[], $array[], $array[]) = [1, 2, 3]; var_dump($array); 上面的代码会返回一个数组:$array == [1, 2, 3] 而不是之前的 [3, 2, 1] 注意:只是赋值的顺序发生变化,赋的值还是和原来一样的. list($a, $b, $c) = [1, 2, 3]; // $

php7 新增功能实例总结

2020-05-23
本文实例总结了php7 新增功能.分享给大家供大家参考,具体如下: 一.核心 增加了group use语法声明.RFC: https://wiki.php.net/rfc/group_use_declarations 增加了null合并运算符??.RFC: https://wiki.php.net/rfc/isset_ternary 64位PHP7字符串长度可以超过2^31次方字节. 增加了Closure::call()方法. 双引号字符串和heredocs里面支持使用\u{xxxxx}来声明u

php7 参数、整形及字符串处理机制修改实例分析

2020-05-22
本文实例讲述了php7 参数.整形及字符串处理机制修改.分享给大家供大家参考,具体如下: 参数处理机制修改 一.重复参数命名不再支持. 重复的参数命名不再支持.比如下面的代码执行的时候会报错: public function foo($a, $b, $unused, $unused) { // ... } 编者按:应该没有人这样用吧. 二.func_get_arg和func_get_args()调整 func_get_arg()和func_get_args()这两个方法返回参数当前的值,而不是传