PHP
文章平均质量分 78
zhyingke
我想看日落,不想看星空
展开
-
PhpStorm code style php 翻译
mac PhpStorm code style php翻译翻译内容路径 Editor > Code Style > PHP导航栏tabs and indents 制表符tab和缩进spaces 空格(类,方法,关键字的空格控制)wrapping and braces:换行和括号翻译内容路径 Editor > Code Style > PHP括号里会有我自己的解释和样例...原创 2020-04-24 14:33:42 · 555 阅读 · 0 评论 -
PHP命名空间
命名空间用来解决两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。任意PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响:类(包括抽象类和traits)、接口、函数和常量。专业词解释非限定名称(Un...原创 2018-08-15 18:08:00 · 126 阅读 · 0 评论 -
php7
批量导入// Pre PHP 7 codeuse some\namespace\ClassA;use some\namespace\ClassB;use some\namespace\ClassC as C; // PHP 7+ codeuse some\namespace\{ClassA,ClassB,ClassC as C}; ??冒号+返回类型 ...原创 2018-03-20 10:07:00 · 99 阅读 · 0 评论 -
PHP输出缓冲区
概念缓冲区(Buffer),实际是一个内存地址空间.他是用来在存储速度不同步的设备或者优先级不同的设备之间传输数据的区域. 通过缓冲可以使进程之间的交互时间等待变小,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发送间断php缓冲区 1.任何输出内容得到函数都会用到输出缓冲区 2.输出缓冲层不是唯一用于缓冲输出的层,它实际上只是很多层中的一个 3.SAPI中的输出缓冲...转载 2018-09-06 18:09:09 · 215 阅读 · 0 评论 -
PHP正则
记录下自己不常见的正则先了解下preg_match方法 preg_match( string $pattern, string $subject[, array &$matches[, int $flags = 0[, int $offset = 0]]] ) pattern:正则表达式 subject : 操作的字符串 matches: 将匹配...原创 2018-09-12 19:00:48 · 93 阅读 · 0 评论 -
memcached做分布式Session
memcached做分布式Session优点:使用memcache来存储Session在读写速度上会快很多,多台服务器集群时,使用memcached能够有效解决Session共享问题 流程: 配置号memcached之后,修改php.ini配置文件 session.save_handler = memcache session.save_path = “tcp://127.0.0.1:...转载 2018-09-10 16:37:16 · 195 阅读 · 0 评论 -
PHP VLD在系统层级上分析不同函数行为
简介 我们可以使用VLD看到底层操作,包括每个函数都在做什么,正在进行哪些系统调用.安装 1. pecl install channel://pecl.php.net/vld-0.14.0 //版本自己根据情况选定 2.修改php.ini 3.查看phpinfo是否有vldvld使用//test.phpecho "hello"." "."world!";/...原创 2018-09-17 18:33:42 · 132 阅读 · 0 评论 -
socket学习(PHP)(未完)
原理socket :套接字,他不是一个程序,也不是协议,是由擦欧总系统提供的通信层的一组API—出自[PHP与MySQL高性能应用开发] 我们可以将它理解成一个用来描述IP地址和端口的概念 socket位于TCP/IP协议的传输控制层,提供客户/服务器模式的异步通信,即客户端向服务器发出服务请求,服务端接收到请求后,提供相应的反馈或服务,也就是两台主机之间通信的通道.应用程序通过它来...原创 2018-09-10 18:11:39 · 116 阅读 · 0 评论 -
swoole实现微信小程序websocket
准备wss的形式,微信小程序后台如果你配置的时候不加端口,默认是443端口,类似于我们的https,而ws就类似于httpError in connection establishment: net::ERR_SSL_PROTOCOL_ERROR 当你遇到这个错误就说明你的ssl配置有问题服务端小程序后台进行websocket的配置我配置了两个地址是 easy.xxxx 和 ea...原创 2018-09-18 17:13:43 · 1659 阅读 · 2 评论 -
PHP生命周期
无论用命令行还是web服务器请求phpzend引擎从文件系统中读取文件,扫描其词典和表达式,解析文件,创建要执行的计算机代码(Opcode),最后执行Opcode参考高性能PHP应用开发...原创 2018-09-18 17:39:58 · 136 阅读 · 0 评论 -
php 命令学习
注意下面的php命令需要放在系统命令或者使用绝对路径进行调用显示版本号 php -v 结果: PHP 7.2.4 (cli) (built: Apr 11 2018 19:25:12) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Z...原创 2018-09-13 17:26:11 · 85 阅读 · 0 评论 -
PHP排序算法
冒泡排序//冒泡排序,大概思路就是每一轮都比较相邻的两个数字大小,小的就对调位置 //比如3 ,2 ,1 第一轮:2,1,3 第二轮:1,2,3 $a = ['3','2','4','6','1','2','3','9','1','2','0']; for ($i=0,$j=count($a);$i<$j-1;$i++){ ...原创 2018-10-09 19:23:45 · 84 阅读 · 0 评论 -
PHP直接将文件流转换为字符串
背景有时你生成一个图片但是你不想保存为文件,而只想以字符串的形式返回给客户端注意:下面的案例中我是以二维码为例,具体的生成方法太多我不会展示出来,总之php生成二维码的方式基本都是GD这个库,重要的是ob_start(),imagepng(),ob_end_clean ()方法 //这个我生成二维码的类方法 $qrCode = new QrCode($url); //开启缓冲区 ...原创 2018-11-01 10:56:23 · 3201 阅读 · 0 评论 -
mac环境搭建php Rabbitmq
在mac环境下要先安装brew install rabbitmqbrew install rabbitmq-c之后使用pecl进行安装pecl install amqp会看到提示,这里你要输入上面安装rabbitmq-c的路径,比如我的是/usr/local/Cellar/rabbitmq-c/0.9.0/Set the path to librabbitmq install pr...原创 2019-07-16 14:50:49 · 191 阅读 · 0 评论 -
PHP:PHP实现socket连接
方法介绍(每个方法括号后面跟的是返回类型)创建一个套接字socket_create ( int $domain , int $type , int $protocol ) : resourcedomain 指定哪个协议用在当前套接字上。eg:AF_INET:IPv4 网络协议type 选择套接字使用的类型。eg:SOCK_STREAM 提供一个顺序化的、可靠的、全双工的、基于连接的字节流...原创 2019-08-02 10:23:17 · 673 阅读 · 0 评论 -
XSS,sql注入入参安全校验
案例1:跨站运行脚本(XSS)<html><form><input name="foo" value=' <?php {$_GET['foo']} ?>' ></form></html>alert('foo')请求参数输入上面内容执行上面会出现上面输入只是简单案例,按照这个思路那...原创 2018-08-15 18:45:00 · 1088 阅读 · 0 评论 -
php注意事项总结
继承注意点:1.继承之后重写方法,参数必须与父类一样类:对象总是通过引用传递原创 2018-08-16 17:04:00 · 170 阅读 · 0 评论 -
PHP基础注意点
is_callable和method_existsis_callable: 用来判断对应类的方法当前有没有权限使用,同时存不存在 method_exists: 仅仅能判断当前方法存不存在is_callable比method_exists慢class Test{ public function pubFun(){} private function priFun(...原创 2018-09-05 16:36:08 · 164 阅读 · 0 评论 -
fopen文件操作详解
1原创 2018-09-05 18:57:08 · 6831 阅读 · 0 评论 -
php测试
概念单元测试:单元测试能单独证实应用中的各个类,方法和函数能正常运行(工具:PHPUnit)测试驱动开发(TDD):在编写代码之前先写测试.不过并不是必须在编码前就写好所有的测试.而是先写一些测试,然后写相关代码,再写测试再写代码.这样不断的迭代开发行为驱动开发(BDD):编写故事,描述应用的表现(工具:PHPSpec和Behat)PHPUnit安装phpUnitcompo...原创 2018-09-04 15:05:00 · 856 阅读 · 0 评论 -
分析性能Xdebug
我们可以使用基准测试工具,例如Apache Bench和Siege找出性能问题.从中可以看出性能问题.如果性能问题不是特别明显,就要使用分析器分析器xdebug 是一个流行的php分析工具,不过这个分析器只应该在开发环境中使用,因为它会消耗大量系统资源.之后通过webgrind显示分析结果XHProf.这个工具在开发环境和生成环境都能使用,分析结果的展示也需要使用SHGUI这个工具...原创 2018-09-04 16:49:00 · 754 阅读 · 1 评论 -
php常用自定义方法
二维数组排序 /** * @param unknown $array 要排序的二维数组 * @param unknown $key 要排序对应的key * @param unknown $order desc降序 asc升序 * @return unknown */ functio...原创 2018-09-06 14:20:14 · 122 阅读 · 0 评论 -
php配置学习
重要的以粗体+斜体进行展示php-fpm.confemergency_restart_threshold = 10 : 在指定时间内,如果失效的php-fpm子进程数超过这个数值,php-fpm主进程进行优雅重启emergency_restart_interval = 1m : 设定emergency_restart_threshold设置采用的时间跨度Pool D...原创 2018-09-03 17:26:00 · 401 阅读 · 0 评论 -
PHP-FPM
PHP-FPM(PHP FastCGI Process Manager简称,意思是PHP FastCGI的进程管理器),适用于管理php进程池的软件,用于接收或处理来自web服务器(nginx)的请求.php-fpm会创建一个主进程(通常以操作系统中根用户的身份运行),控制何时以及如何把HTTP请求转发给一个或多个子进程处理.php-fpm主进程还控制着什么时候创建(处理web应用更多的流量)...原创 2018-08-31 16:56:00 · 142 阅读 · 0 评论 -
PHP流
介绍流作用是使用统一的方式处理文件,网络和数据压缩等共用同一套函数和方法的操作.简单而言,流是具有流式行为的资源对象.因此,流可以线性读写,或许还能使用fseek()函数定位到流中的任何位置.-----PHP手册流的作用是在出发地和目的地之间传输数据.出发地和目的地可以是文件,命令行进程,网络连接,zip或tar压缩文件,临时内存,标准输入或输出,或者是通过PHP流封装协议实现的任何其他资...原创 2018-08-30 17:49:00 · 581 阅读 · 0 评论 -
密码散列算法
密码散列算法函数password_xxxx下面总结就是:bcrypt很安全,比md5和sha1安全,但是有速度的代价.Modern PHP原文对于密码的生成和校验我们可以用PHP自带的一个工具进行password_password_hash(string 需加密的参数 ,int $algo(使用的算法) [,array $options] ) 创建密码的散列(has...原创 2018-08-29 17:51:00 · 4202 阅读 · 0 评论 -
Filter php自带过滤函数
PHP Filter 简介PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。是一个很有用的方法,但是自己用的很少.所以专门记录下.以后可以用基本知识INPUT_xxx : 这种表示的是你要校验的参数是从哪里获得的.比如INPUT_GET,那么方法就会从$_GET中取对应的变量值进行校验INPUT_XXX :INPUT_GETINPUT_PO...原创 2018-08-29 17:15:00 · 1205 阅读 · 0 评论 -
闭包和匿名函数
概念闭包是指在创建时封装周围状态的函数.即便闭包所在的环境不存在了,闭包中封装的状态依然存在.匿名函数其实就是没有名字的函数从理论上讲闭包和匿名函数是不同的概念.但是php将其视作为相同的概念注意:闭包和匿名函数其实是伪装成函数的对象.如果审查PHP闭包或匿名函数,会发现它们是Closure类的实例 上面的案例中之所以能调用$closure变量,是因为闭包对象实现了__...原创 2018-08-28 17:46:00 · 292 阅读 · 0 评论 -
生成器(generator)
调用生成器函数(yield)的时候,php会返回一个属于Generator类的对象.这个对象可以使用foreach()函数进行迭代.每次迭代,php会要求Generator实例计算并提供下一个要迭代的值.生成器每次产出一个值之后,生成器的内部状态都会停顿,向生成器请求下一个值时,内部状态又会恢复.生成器的内部状态会一直在停顿和恢复之间切换,直到函数的末尾或遇到空的return;语句为止,节...原创 2018-08-28 17:02:00 · 612 阅读 · 0 评论 -
trait(性状)
trait是类的部分实现(即常量,属性,方法),可以混入一个或多个现有的php类中trait有两个作用:表明类可以做什么(像是接口),提供模块化实现(像是类)trait目的:当有两个类没有必然的关联关系,但是在某个类中我们需要同时使用这两个类中的方法,我们可以使用trait,就类似于进行了多继承.但是不能等同于继承 注意:PHP解释器在编译的时候会把性状复制粘贴到类...原创 2018-08-28 16:06:00 · 317 阅读 · 0 评论 -
PHP异常和错误
PHP对于异常的支持还不完善,很多异常不会自动抛出需要人为的抛出,这时我们就需要自己通过一些特殊的方法,模拟自动抛出异常下面的代码你可以捕获大部分的错误注意我没有使用set_exception_handler:设置用户自定义的异常处理函数set_exception_handler(callable $exception_handler)设置默认的异常处理程序,用于没有用 try...原创 2018-08-16 18:20:00 · 123 阅读 · 0 评论 -
魔术方法
__clone()1.当使用clone的时候触发2.需要定义在对应的类内3.必须是public的权限__get($var)当访问不存在/不可访问的参数的时候调用,必须是public__set($key,$var)当设置不存在/不可访问的参数的时候调用,必须是public__call()调用不存在/不可访问的方法时会触发,这个不存在的定义有:1.类内根本就没有...原创 2018-08-16 17:04:00 · 480 阅读 · 0 评论 -
HTTP 验证
public function indexAction(){ $this-&amp;gt;requireAuth(); } public function forceAuth(){ //PHP Protected Area 这个是弹框中显示的内容 header('WWW-Authenticate: Basic real...原创 2018-09-11 18:44:27 · 1401 阅读 · 0 评论