PHP技术分享
文章平均质量分 66
主要是PHP相关的技术分享
r_martian
这个作者很懒,什么都没留下…
展开
-
【算法】快排
<?phpfunction qs(array $arr) { $len = count($arr); if (!is_array($arr) || $len <= 1) { return $arr; } $piot = $arr[0]; $l = $r = []; for ($i = 1; $i < $len; $i++) { if ($arr[$i] < $piot) {原创 2021-04-15 22:19:55 · 64 阅读 · 0 评论 -
PHP自动加载机制
一、require / include最初的文件加载机制是require/include把一个文件加载进来,但是随着开发规模的增大,复杂性也越来越高,可能造成遗漏或者冗余,因此在PHP5版本进入自动加载机制(autoload)require("/var/www/Person.php")$per = new Person()//或者include("/var/www/Person.php...原创 2020-03-11 11:00:07 · 1141 阅读 · 0 评论 -
Twig模板引擎
一、模板引擎模板引擎(Web开发的模板引擎)是为了用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档,其本质就是根据一定的规则进行变量替换。模板引擎可以解耦前后端,提高开发效率。Twig是一款灵活、快速、安全的PHP模板引擎,类似于其他的模板引擎, 如Smarty、Django、Jinja等。每种模板引擎的实现本质是相同的——就是...原创 2019-08-11 11:27:54 · 558 阅读 · 1 评论 -
php 输入变量超过1000
NOTICE: PHP message: PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0解决方案:1 修改php.ini 中的 max_input_vars 项2 将form输入...原创 2019-06-03 21:38:46 · 828 阅读 · 0 评论 -
抽象类与接口区别
接口和抽象类的设计目的就是不一样的。 接口是对动作的抽象,而抽象类是对根源的抽象1.抽象类和接口都不能被直接实例化 2.抽象类要被子类继承,接口要被子类实现 3.接口里面只能对方法进行声明,抽象类既可以对方法进行声明,实现 4.接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法 5.类可以实现很多个接口,但是只能继承一个抽象类 6.类如果要实现一个接口,它必...原创 2018-03-15 22:47:24 · 277 阅读 · 0 评论 -
理解serialize与json序列化
PHP的serialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式,而JSON则是一种更轻、更友好的用于接口(AJAX、REST等)数据交换的格式,两者都是以一种字符串的方式来体现一种数据结构。1 用途serialize主要用于php的序列化,存储到文件或者数据库 json_encode 序列化,主要用于与其他语言交互,对于传输来说,json有许多优点。2 内容s...原创 2018-03-02 23:52:38 · 3440 阅读 · 0 评论 -
代码编程规范
1 缩进 tab键,4个空格 2 类定义独占一行,类名PascalCaseclass FooBarBaz{// ...}3 控制语句大括号while ($i 10) { //同一行// ..}4 方法大括号位置functionbar($baz) { //同一行// ...}5 条件语句空格括号内无空格,括号外有空格,原创 2018-01-25 21:00:43 · 537 阅读 · 0 评论 -
必知composer命令
一、列表内容 composer composer list二、查看当前镜像源 composer config -l -g [repositories.packagist.org.type] composer [repositories.packagist.org.url] https://packagist.org 或者 composer c原创 2017-07-24 23:32:34 · 1505 阅读 · 0 评论 -
解析url
对url进行解析,比如要从url中获取protocol、host、port、Query等信息,我们可以通过几个函数实现。parse_url() //- 返回protocol,post,port,query等信息pathinfo() //- 返回文件路径的信息dirname() //- 返回路径中的目录部分basename() //- 返回路径中的文件名部分1.parse_url() mixed原创 2016-04-11 19:08:19 · 885 阅读 · 0 评论 -
php手机号码归属地查询
类似于《根据ip获取用户登录区域信息》查询用户区域,可以通过相关的API获取手机号码的归属地信息。相关API,包括淘宝、拍拍、115、有道等,通过对比,选择淘宝的api,url如下:'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=手机号';需要做的就是向上面的url发送get请求,获取tel对应手机号的相关信息即可。原创 2016-03-01 08:57:55 · 1222 阅读 · 0 评论 -
phpdoc/phpdocumentor注释规范
phpDocumentor通过解析PHP代码逻辑结构(如文件,类,函数,常量,全局变量,类成员/方法等),重新整理后生成普通的可读说明文档。一、给php代码添加规范的注释 PHPDocument是从源代码的注释中生成文档,因此在给程序做注释时,即编制文档的过程。即,PHPdoc促使你要养成良好的编程习惯,尽量使用规范,清晰文字为程序做注释,同时也避免了事后编制文档和文档的更新不同步的一些问题。在p原创 2015-11-22 00:51:29 · 4463 阅读 · 0 评论 -
PHPDoc/PHPDocumentor生成API文档
PHPDocumentor是一个用PHP写的强大的文档自动生成工具,对于有规范注释的php程序,能够快速生成具有结构清晰、相互参照、索引等功能的API文档。旧版本是PHPDoc,PHPDoc是PEAR下面的一个非常优秀的模块,类似于javadoc。从1.3.0开始,更名为phpDocumentor,新版本新加了对php5语法的支持,同时,可以通过在客户端浏览器上操作生成文档,文档可以转换为PDF、H原创 2015-11-18 22:22:28 · 4907 阅读 · 0 评论 -
linux编译安装php7.4及扩展
一、获取包并解压官网下载www.php.net/docs.php或者wget https://www.php.net/distributions/php-7.4.14.tar.gztar -zxvf php-7.4.14.tar.gz二、编译安装//个人编译项./configure --prefix=/opt/apps/php-7.4 --enable-fpm ‘–with-config-file-path=/opt/apps/php-7.4/etc’ ‘–with-confi原创 2021-01-31 15:25:11 · 2594 阅读 · 0 评论 -
【深度】一文读懂cgi,fast-cgi,php-cgi,php-fpm
cgi common gateway interfacefastcgi,cgi升级版php-cgi,php解释器php-fpm,实现fast-cgi的程序原创 2020-12-27 15:55:01 · 342 阅读 · 0 评论 -
【深度】如何解决PHPSTORM打开项目慢的问题
一直使用这个IDE,打开项目都是秒开,最近在打开第二个、第三个IDE时,全部卡死,什么操作都做不了,新打开的IDE,一直处于loading components状态,当然网上反映其他状态的也很多,我遇到的情况是这个样子,所以只说这个问题。一、百度搜索:真不是看不起百度,百度的结果就是改配置,就不贴了,具体如下:help => Edit Custom VM Options 改相关配置,可能会解决一部分人的问题二、google搜索,查了半天看到了一个issue,如果是程序员,那么就从头到尾读完,原创 2020-12-05 12:09:03 · 2122 阅读 · 8 评论 -
【小TIPS】 广告监测地址中间路径跟踪
之前写了一篇监测地址跟踪的文章,【基于guzzlehttp库实现广告监测地址检查】,由于不断的演进,目前期望结果是跟踪全部的uri和code,所以打算写篇文章说说这个问题。一、目的:跟踪重定向的路径和状态信息如果只跟踪重定向信息,使用allow_redirects的track_redirects=true即可实现,on_redirect回调记录相关信息即可。$onRedirect = function( RequestInterface $request, ResponseInterf原创 2020-11-05 23:03:00 · 215 阅读 · 0 评论 -
PHP trait特性
trait 特点、特征、特性1 为什么要trait解决单继承和代码复用问题2 怎么使用trait不能实例化,只需在类中使用use + trait名称,多个用逗号隔开trait T{ public function f(){ echo "T"; }}class C{ use T;}$c = new C();$c->f();3 属性与方法trait属性和类属性不能重复多个trait的方法可以相同,只是在使用时需要insteadof或者转载 2020-10-30 21:53:03 · 222 阅读 · 0 评论 -
【小TIPS】基于guzzlehttp库实现广告监测地址检查
在广告投放系统中,任何一个投放的广告,都是要有监测地址的,它存在的目的是为了上报用户行为信息(imp、click),一般地,一个监测地址里,会包含多家监测信息,原因在于多家监测是为了避免一家监测机构无法上报导致数据无法成功统计到,二是为了数据的准确性,一家监测地址无法证明上报的准确性,两家或多家则可以进行相互印证,保证上报数据的正确、合理。那么问题来了,怎么统计呢?一、统计方案给定一个广告监测地址,如果判断有几方监测呢,方法有以下几种:第一种:监测地址里包含多少个http/https信息substr原创 2020-08-08 16:15:54 · 487 阅读 · 0 评论 -
【深度】如何正确解析文件MIME类型
文件mime类型是辨识、区别一个文件类型的标准,比如jpg、png、gif、webp、zip、mp4等等,在日常项目开发中,也经常需要解析文件的mime类型,比如上传文件时,需要同步存储mime,以便于在使用文件时的正常解析。所以,本篇就基于线上问题,说说文件的mime。1 什么是MIMEMIME,即Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型(或媒体类型),是一种互联网标准,用来表示文档、文件或字节流的性质和格式,设计的最初目的是为了在发送电子原创 2020-07-25 16:51:35 · 1372 阅读 · 0 评论 -
composer自动加载
第一步,框架入口文件index.phprequire __DIR__.'/../vendor/autoload.php';实际上是引入了composer目录下autoload文件从内容可知,其又引入了autoload_real文件,调用了类加载方法<?php// autoload.php @generated by Composerrequire_once __DIR__ ...原创 2020-03-11 21:45:32 · 547 阅读 · 0 评论 -
PHPMailer function set_magic_quotes_runtime() is deprecated
测试代码$mailer = new Mailer();$mailer->FromName = 'BigData Tech Team';$mailer->Subject = "【报警提醒】广告主[{$adv_id}]充值异常";$body = "广告主:{$adv_id}<br>";$mailer->MsgHTML($body);$mailer->A...原创 2019-04-17 18:35:20 · 492 阅读 · 0 评论 -
Laravel Facade 实现揭秘
Facade(门面),为应用服务容器中的绑定类提供了一个“静态”接口,相比于传统静态方法,在维护时能够提供更加易于测试、更加灵活、简明优雅的语法。Laravel 内置了很多facade,都定义在Illuminate\Support\Facades命名空间下,如App,Artisan,Auth,Cache,Config,Cookie,DB,Event,File,Log,Mail,Queue,Re...原创 2018-07-22 17:28:06 · 1098 阅读 · 0 评论 -
PHP之网络资源抓取
在进行网络资源抓取时,最常用的方法有,curl和file_get_contents以及file。如果不考虑代码性能,三者功能类似。但也存在区别:1.file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但CURL会自动缓存DNS信息。对同一域名下的网页或者图片请求只需一次DNS查询。大大减少了DNS查询的次数。所以CURL的性能优于file_get_conten原创 2015-11-16 19:56:25 · 1140 阅读 · 0 评论 -
PHP safe_mode简介
PHP安全模式就是以安全模式运行php,safe_mode是在php.ini中设置,默认是关闭的。; Safe Mode; http://php.net/safe-modesafe_mode=Offphp的安全模式提供一个基本安全的共享环境,在一个有多个用户帐户存在的php开放的web服务器上。当一个web服务器上运行的php打开了安全模式,那么一些函数将被完全的禁止,并且会限制一些可用的功能。原创 2016-04-21 21:46:52 · 1157 阅读 · 0 评论 -
php 正则表达式贪婪模式,非贪婪模式
正则表达式匹配模式分为贪婪非贪婪两种。这两种模式是影响存在限定词修饰的子表达式的匹配行为。贪婪模式:是一次尽可能多的匹配结果集,直白的说就是匹配最长的符合表达式的串。 非贪婪模式:是一次匹配最短的符合表达式的串,如果有多个满足则匹配出多个限定词包括:{m,}, {m,n} ? * +* 零次或多次+ 一次或多次? 零次或一次举个例子: 字符串:aaababcab,要求匹配出axxb格式的字符原创 2016-08-26 23:01:23 · 1670 阅读 · 0 评论 -
PHP fputcsv 长数字显示问题
使用fputcsv()导出数据时,一个类似于身份证的字段导出后,excel打开是以科学计数法的形式显示的,不过双击该单元格后,字段值显示正常,说明字段值本身是正确的,只是excel解析的问题,那么如何才能正常显示?google了一下,发现提及的方法有:1.数字转字符串 2.前置加’0’ 3.”=”“.$var.”“”(借助excel的运算)但没有解决问题,个人使用方法如下:example:$i原创 2017-03-26 22:47:25 · 3415 阅读 · 0 评论 -
PHP扩展vld查看opcodes
1. 下载与安装VLDwget http://pecl.php.net/get/vld-0.11.2.tgztar zxvf vld-0.11.2.tgzcd ./vld-0.11.2/usr/bin/phpize 或者直接phpize,(phpize - prepare a PHP extension for compiling)/configure --with原创 2017-10-09 22:54:05 · 424 阅读 · 0 评论 -
线上opcache问题分析
一、问题 今天上线新功能,有一个接口原始请求方式是get,后来改为post方式,预发环境测试正常,然后发布到线上,线上直接报错,错误信息如下:[2017-11-29 19:09:02] xxxx,line:242 message:[code => 405 | msg => 请求方法错误(GET or POST)。二、追查 提示就是请求方式错误,但是看代码一切正常,直接op重启php-fpm,然后原创 2018-01-03 22:40:14 · 1910 阅读 · 0 评论 -
php xhprof 性能分析工具
1.获取源码 https://github.com/longxinH/xhprof 或 下载zip文件,然后执行步骤2.2.编译安装cd xhprof-master/extension/sudo /usr/bin/phpizesudo ./configure --with-php-config=/usr/bin/php-config --enable-xh...原创 2018-05-06 16:12:41 · 532 阅读 · 2 评论 -
nginx与php-fpm通信
nginx和php-fpm通信有tcp socket和unix socket两种方式。unix socket方式 优点: unix socket要比tcp快,且消耗资源少,因为socket之间在nginx和php-fpm的进程之间通信,而tcp需要经过本地回环驱动,还要申请临时端口和tcp相关资源。缺点: unix socket相比不是那么稳定,当并发连接数爆发时,会产生大量的长时缓...原创 2018-06-26 23:44:18 · 793 阅读 · 0 评论 -
PHP7革新与性能优化
PHP是一种在全球范围内被广泛使用的Web开发语言,PHP7的革新也当然会给这些Web服务带来更深刻的变化。这里引用鸟哥PPT中的一个图表(82%的Web站点有使用PHP作为开发语言):(注:一个web站点可以会使用多种语言作为它的开发语言)(注:本文含有不少从鸟哥PPT里的截图,图片版权归鸟哥所有)我们先看看两张激动人心的性能测...转载 2018-07-16 23:00:06 · 372 阅读 · 2 评论 -
php _call与__callStatic方法
php 5.3后新增__call与__callStatic魔法方法。 __call:当调用一个不可访问方法,会自动调用__call 方法。 __callStatic:在静态上下文中调用一个不可访问方法时,会自动调用__callStatic方法。public mixed __call ( string $name, array $arguments )public static mixe...原创 2018-07-22 08:57:33 · 1058 阅读 · 0 评论 -
PHP新垃圾回收机制:Zend GC详解
一、概述&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount_gc的值,如果refcount_gc为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而这种GC实现方案中,...转载 2018-08-30 16:24:19 · 5318 阅读 · 3 评论 -
《重构-改善既有代码的设计》总结
一个好的研发工程师,不仅要懂得写代码,而且要懂得写好的代码,更要有产品思维和测试思维。——佚名一、前言1 什么是好的代码? 代码块长度适中 代码逻辑清晰 函数名称语义化 变量名称语义化 ... 以上都是好的代码应该具备的特征!2 NIH综合征开发过程中都会遇到不好的代码,其实也不是不好,只是限于当时的环境无法做到更好,如果在遇到不好的代码,一直抱怨而不进行重构,就擅自编写...原创 2019-09-12 07:21:27 · 367 阅读 · 0 评论