PHP
文章平均质量分 74
wowo_zZ
这个作者很懒,什么都没留下…
展开
-
[php-src]CONTRIBUTING.md
贡献php每一位php开发者都可以贡献php,php的更新不会停止,每个release版本都需要做大量工作,参与的人越多越好。合并请求(PR)PHP欢迎大家通过PR来增加测试、修复bug和实现RFC的功能,但请确保PR包含适当的测试。如果是修复bug,请将PR提交到bug影响的最低版本的活动分支,例如现在,最低版本的活动分支是php7.3,那么对应的Git分支就是PHP-7.3。同时请确保PR中附带一个bug tracker系统中对应的链接。实现RFC新功能的PR应该直接从master拉去分支进行原创 2021-02-26 15:14:49 · 258 阅读 · 0 评论 -
[php-src]README.md
PHP:一种通用的脚本语言,尤其适合web开发。快速、扩展、实用。安装:可执行版本&手动编译(略)扩展:PHP Extension Community Library - PECL贡献:官方代码仓库:git.php.netGithub镜像:GitHub mirror repositoryDiscussions:在Github上,但根据讨论主题,可转发到php开发组提出New features,需要提供被开发者投票接受的RFC,见Request for comments - RFC 和原创 2021-02-26 14:16:13 · 114 阅读 · 0 评论 -
Guzzle/promises源码解读
最近在读guzzle/promise的源码,觉得有点绕,所以这里记录一下。promise介绍promise是一个异步操作的标准,它规定了应当如何写一系列相关的异步操作,主要目的是规范化异步操作,避免大量的异步操作导致的回调地域。Guzzle中的promisepromise是如何规范异步操作的异步操作的状态只有三种:pending-等待,fulfilled-成功,rejected-失败异步状态的变化只有两种:pending->fullfilled,pending->rejecte.原创 2021-01-31 07:20:18 · 1138 阅读 · 0 评论 -
PHP中curl库的CURLOPT_HEADER和CURLOPT_HTTPHEADER
昨天在写一段程序的时候卡了好久,卡在了一段curl代码上面:$ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $config['ocr_api']); $headers = [ 'X-Appid:' . $appid, 'X-CurTi原创 2020-11-27 15:22:28 · 5551 阅读 · 0 评论 -
每天5分钟,细读PHP手册-6
错误控制运算符@:放在一个表达式之前,该表达式可能产生的任何错误信息都被忽略掉。目前的"@“错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果在某个不存在或者敲错了字母的函数调用前用了”@"来抑制错误信息,那脚本会没有任何迹象显示原因而死在那里。执行运算符``:这是一个执行运算符,PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回。与s...原创 2019-03-26 14:51:04 · 125 阅读 · 0 评论 -
每天5分钟,细读PHP手册-7
foreachforeach中的$value只有在可以被引用时才可以使用&来表示引用;数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁;foreach 不支持用"@"来抑制错误信息的能力;breakbreak 可以接受一个可选的数字参数来决定跳出几重循环;continuecontinue 可以接受一个可...原创 2019-03-26 14:51:43 · 139 阅读 · 0 评论 -
每天5分钟,细读PHP手册-8
include查找顺序:被包含文件先按参数给出的路径寻找;如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找;如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找;如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误;如果定义了...原创 2019-04-02 09:17:26 · 169 阅读 · 0 评论 -
每天5分钟,细读PHP手册-9
类与对象自 PHP 5 起完全重写了对象模型以得到更佳性能和更多特性。这是自 PHP 4 以来的最大变化。PHP 5 具有完整的对象模型;创建对象有三种方式:new class, new object, class::getNew();当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数;自 PHP 5....原创 2019-04-02 09:17:54 · 102 阅读 · 0 评论 -
每天5分钟,细读PHP手册-10
static关键字静态属性不能通过一个类已实例化的对象来访问(但静态方法可以);为了兼容 PHP 4,如果没有指定访问控制,属性和方法默认为公有;由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用;静态属性不可以由对象通过 -> 操作符来访问;用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误;自 PHP 5.3.0 起,可以用一个...原创 2019-04-02 09:18:26 · 143 阅读 · 0 评论 -
每天5分钟,细读PHP手册-11
重载php的重载不是严格意义上的重载。它是指动态的创建类属性和方法,这一点是通过魔术方法来实现的。当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。本节后面将使用不可访问属性和不可访问方法来称呼这些未定义或不可见的类属性或方法;属性重载只能在对象中进行。在静态方法中,这些魔术方法将不会被调用。所以这些方法都不能被 声明为 static。从 PHP 5.3.0 起, 将这些魔...原创 2019-04-29 14:44:58 · 169 阅读 · 0 评论 -
【PHP扩展之旅】APC和APCu
扩展介绍分配一定大小的内存,缓存opcode,也可以在程序中缓存数据。APC和APCuAPC是比较老的版本,只更新到2015年。而APCu最早的版本是从4.0.0开始的,当时是直接从APC的master分支直接fork过来的。PHP7支持PHP7的支持是从5.0.0版本开始的。使用方法直接下载源码包,编译安装即可;通过在php.ini中设置参数来控制apc;通过apc.shm_...原创 2019-07-01 19:57:54 · 1909 阅读 · 0 评论 -
每天5分钟,细读PHP手册-12
错误处理error_reporting设置错误级别;display_errors控制脚本是否输出错误;log_errors和error_log指令控制错误日志;PHP7将很多错误当做异常处理,但catch的是ERROR类,不是Exception;异常处理异常对象不能clone;自定义Exception时最好调用parent::construct,来确认所有变量都正确初始化;...原创 2019-07-29 11:08:31 · 189 阅读 · 0 评论 -
每天5分钟,细读PHP手册-13
支持的协议和封装协议file:// — 访问本地文件系统http:// – https:// — 访问 HTTP(s) 网址ftp:// – ftps:// — 访问 FTP(s) URLsphp:// — 访问各个输入/输出流(I/O streams)zlib:// – bzip2:// – zip:// — 压缩流data:// — 数据(RFC 2397)、glob:// —...原创 2019-07-29 11:09:21 · 251 阅读 · 0 评论 -
每天5分钟,细读PHP手册-14
用户提交的数据必须时常留意你的代码,以确保每一个从客户端提交的变量都经过适当的检查,然后问自己以下一些问题:此脚本是否只能影响所预期的文件?非正常的数据被提交后能否产生作用?此脚本能用于计划外的用途吗?此脚本能否和其它脚本结合起来做坏事?是否所有的事务都被充分记录了?魔术引号指令magic_quotes_gpc:对GET、POST、COOKIE生效;magic_quo...原创 2019-07-29 11:09:56 · 238 阅读 · 0 评论 -
每天5分钟,细读PHP手册-5
常量语法使用define()来定义常量,5.3之后,可以使用const;和使用 define() 来定义常量相反的是,使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。常量只能包含标量数据,可以定义resource常量,但结果不可预料;常量和变量有如下不同:常量前面没...原创 2019-03-26 14:49:28 · 159 阅读 · 0 评论 -
每天5分钟,细读PHP手册-4
变量php中的变量是用一个美元符号后面跟着变量名来表示,变量名是区分大小写的。$this 是一个特殊的变量,它不能被赋值;php的变量赋值默认是传值赋值,可以使用&来实现引用赋值;只有有名字的变量才可以引用赋值;未初始化的变量具有其类型的默认值 - 布尔类型的变量默认值是 FALSE,整形和浮点型变量默认值是零,字符串型变量(例如用于 echo 中)默认值是空字符串以及数组变量...原创 2019-03-26 14:48:35 · 135 阅读 · 0 评论 -
php -m看到的扩展和phpinfo不一样
最近在做php的项目中犯了一个很蠢的错误,记录一下,如果以后有人遇到,提供一个check的思路。原创 2017-08-22 16:29:00 · 7152 阅读 · 0 评论 -
PHPStorm+Xdebug进行emote Debug时无法进入断点问题排查
最近一直在研究Xdebug的用法,主要是因为Xdebug对PHP的开发效率提升确实很大,而却能帮我们解决很多问题。所以这里就总结下我在配置PHPStorm+Xdebug环境中遇到的坑,给遇到进不去断点的朋友一些排查的建议。原创 2017-08-22 21:34:27 · 16556 阅读 · 13 评论 -
XAMPP使用中碰到【Maximum execution time of 30 seconds exceeded】问题
今天在使用xampp环境安装drupal的时候碰到了这个问题,root couse就是【Maximum execution time of 30 seconds exceeded】。 原因很简单,xampp中php的默认时间设的是30秒,普通http request肯定没问题,但如果是安装某个application可能就会超出这个时间了,所以找到xampp的php.ini,修改一下: max_e原创 2017-11-06 16:57:42 · 1400 阅读 · 0 评论 -
PHP工程规范——PSR-1
统一的代码规范,有助于培养良好的编码习惯,团队成员间的代码交流更加简单。而对于PHP来说,PSR无疑是目前最好的选择。 PSR,即PHP Standard Recommendations,是目前最流行的PHP相关规范集合。截止目前,PSR官方给出了19中规范,在阅读规范时需要注意规范的状态。现有的状态分为: - Deprecated 不在推荐了,因为在后续版本中可能被废弃。 -...原创 2018-07-16 19:24:50 · 326 阅读 · 0 评论 -
PHP工程规范——PSR-2
1、必须满足psr-1; 2、必须使用4个空格作为缩进,不能使用tabs; 3、对于行数限制没有严格要求,但建议在120行以内,每一行建议不多于80个字符; 4、namespace声明之后必须空行,use声明之后必须空行; 5、类名后面的开大括弧必须另起一行,闭大括弧必须另起一行; 6、方法名后面的开大括弧必须另起一行,闭大括弧必须另起一行; 7、类的属性和方法必须指定可见性,abst...原创 2018-07-23 10:03:31 · 341 阅读 · 0 评论 -
php中PECL和PEAR的关系
php中有两个概念:PEAR和PECL。这两个概念关系紧密,却又有着本质的区别。今天就试着把它们的关系讲讲清楚。基本概念PEAR的概念原文如下:PEAR(PHP Extension and Application Repository) is a framework and distribution system for reusable PHP components.我的理解是:...原创 2018-12-29 17:27:37 · 1944 阅读 · 0 评论 -
PHP中traits的作用和使用
traits在php中的使用频率不是很高,但却是几乎和class同一级别的东西。与class一起完善单继承的同时,规避了多继承带来的问题。所以还是有必要了解一下的。引入Traits是在php5.4.0中引入的,所以如果项目低于这个版本,是没办法使用traits的。概念Traits(特性集1)是针对php这样的单继承语言设计的。旨在让开发者很方便的在不同继承体系的多个类之间公用一系列方法...原创 2019-01-04 11:26:58 · 2071 阅读 · 0 评论 -
k8s环境下由predis初始化连接缓慢引起的一次问题排查
背景最近业务上在做同城双中心。原本的机房使用的是swarm集群,新机房使用的是k8s集群。业务迁移到新机房的主要工作集中在:库、redis、es等底层服务的迁移;redis由原来的vip单点模式,切换为redis-cluster,由于phpredis1官方版本暂时不支持带auth的cluster模式,所以选择了predis链接redis;将之前的swarm集群,迁移到k8s集群;现象...原创 2018-12-25 17:24:16 · 1116 阅读 · 0 评论 -
CodeIgniter框架性能剖析工具CI_profiling
本篇文章是针对CodeIgniter框架提出了一个性能剖析的工具。可以帮助使用CI的开发者清晰的关注到代码执行过程中详细的耗时信息,以便于进一步排查问题,或者分析系统瓶颈来进行优化。性能剖析性能剖析(profile)这个词,我是了解与《高性能MySQL》一书。放到CI框架中,其实就是剖析框架代码在执行过程中的各个操作耗时,这些操作可能是查询数据库、查询缓存、RPC调用或者是自定义的某段代码...原创 2018-12-31 13:25:14 · 695 阅读 · 0 评论 -
git commit时进行PHP代码的语法和风格检查工具
文章目录问题思路语法检查代码风格检查钩子文件问题最近遇到一件事很苦恼。在走读同事的代码时,经常看到不符合代码风格的代码,由于自己对代码有轻微的强迫症,所以看到这些代码就很难受。但是觉得仅仅因为风格就给同事提issue,也不太合适。所以就想,如果有开发流程能自动帮我们做【代码风格检查】这件事就好了。思路我们是使用git进行代码管理的。所以很容易想到是否可以在git的work flow中加入该...原创 2019-01-11 16:03:29 · 2669 阅读 · 0 评论 -
每天5分钟,细读PHP手册-1
php语言的开始和结束标记有四种:<?php ?><script language="php"></script><? ?> 打开short_open_tag<% %> 打开asp_tags一个PHP代码段的最后一行代码可以不使用分号结尾php中的9种基本类型:四种标量类型:bool、integer、fl...原创 2019-03-22 06:00:07 · 161 阅读 · 0 评论 -
每天5分钟,细读PHP手册-2
Float浮点型float又叫double、real;-要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算中所能接受的最小的差别值。NAN表示一个在浮点运算中不可表述的值,不能做比较(包括自身比较),应该用is_nan()检查;string有一系列字符组成,每个字符是一个字节,也就意味着只能支持256的字...原创 2019-03-22 06:00:52 · 115 阅读 · 0 评论 -
每天5分钟,细读PHP手册-3
Array数组自 PHP 5.4 起可以用直接对函数或方法调用的结果进行数组解引用,在此之前只能通过一个临时变量。自 PHP 5.5 起可以直接对一个数组原型进行数组解引用。试图访问一个未定义的数组键名与访问任何未定义变量一样:会导致 E_NOTICE 级别错误信息,其结果为 NULLunset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。如果需要删除后重建索引,可以用 ...原创 2019-03-22 06:01:23 · 157 阅读 · 0 评论 -
一)面向对象思想的核心概念
1.1 面向对象的行与本把一个对象存起来,称为序列化,序列化和反序列化都要包含类的名称。序列化只会存储属性,方法通过存储的类名去调用,且公用公共的代码空间;php类的实现在底层是通过“属性数组+方法数组”来实现的;对象和数组的却别在于对象多了一个指向类的指针;当对象由标量强制转换成的object,则没有一个类与之对应,php中的“孤儿”类stdClass会收留这个对象;1.2 魔术方法的原创 2015-07-07 20:02:39 · 1246 阅读 · 0 评论