手撸一个类似 Laravel 验证器的表单验证器

2023-06-27
阅读 3 分钟
740
构造函数的第三个参数 messages 可以不要,默认是英文提示。而且该参数支持不同粒度的错误信息,如果传对象,则如果对应的规则校验不通过,就使用对应的错误信息;如果传字符串,则不论什么规则未通过,都使用该错误信息。

关于php源码中refcount的疑问

2022-10-31
阅读 7 分钟
793
明显,如果返回值类型是scalar,也就是标量(基本数据类型,整型、浮点型、字符串等),那么refcount指定为0,否则为N。如果设置了注释,那么以注释为最高优先级。

图数据库neo4j的PHP库

2022-07-25
阅读 1 分钟
2.2k
git 项目地址 church/neo4j介绍基于PHP的neo4j库,源文档链接地址 neo4j http api安装环境需求PHP >= 7.4安装 {代码...} 用法初始化 {代码...} 查询语句 {代码...} 开启事务 {代码...} 提交事务 {代码...} 延长事务有效期default expiry time is 60 seconds. {代码...} 回滚 {代码...} 开启和提交事务 {代码...} 单元...

php与java互通aes_encrypt

2022-06-15
阅读 1 分钟
1.5k
在key小于等于16位时,调用openssl_encrypt($text, 'aes-128-ecb', $key)结果一致,当key大于16位时,结果不一致。

大数斐波那契数列的算法

2022-03-08
阅读 2 分钟
1.8k
斐波那契数列简单版: {代码...} n小于10,性能尚可。n取大数,使用时间飙升。优化一下,空间换时间,已经计算出结果的存在数组里,复用。 {代码...} 现在性能是够了,但是如果n取的数特别大,超出整型或浮点型的范围,那就要改用字符串存储。要实现竖式加法。 {代码...} 最终算法。

快速掌握新版本PHP新功能的技巧

2021-12-16
阅读 2 分钟
5.6k
最新PHP版本更新迭代非常快,很多小伙伴都直呼学不动了。又因为文档具有一定的滞后性,看全英文RFC也是有点门槛的事情。所以本文想教大家一种比较快速全面了解新功能的技巧。

我的2021

2021-12-10
阅读 2 分钟
3.1k
2021年2月20日,开工大吉,我却高兴不起来,手头上负责的项目一团稀烂,目标不清晰、急功近利、市场没有任何正向反馈,并且2020年频繁更改需求已经磨灭了我所有的热情。由于项目前景不明,手底下3个技术人员想离职,公司高层给领导的压力又传导我这里,令我焦头烂额。

PHP8.1之enum解析

2021-12-09
阅读 3 分钟
5.2k
enum 关键字打头, 后面可选跟: (string|int), 因为是类所以可以实现接口 implement SomeInterface, MoreInterface, 又因为加了 ZEND_ACC_FINAL, 相当于 final class className, 所以是不能继承别的枚举类型.

第三方支付平台提现原子性问题解决方案

2021-09-15
阅读 2 分钟
2.3k
在业务逻辑中,经常会碰到提现需求。提现的实现一般分为两个步骤:扣除余额调用第三方支付接口进行提现(比如微信支付:企业付款到零钱)假设我们这样写(伪代码): {代码...} 这样写会有什么问题?当执行commit的时候,由于网络原因,数据库突然连不上了或者数据库挂了,怎么办?会导致什么后果?会导致钱付出去了,但是...

swoole协程复用提高性能

2021-08-20
阅读 2 分钟
1.9k
实现一个HTTP服务器时,每个请求开一个协程处理,处理完请求后销毁,让我们优化这段逻辑,我们很容易联想到FASTCGI对比CGI的改进。无非就是预先生成几个worker进程,处理完成后不销毁复用嘛。

php8注解详解

2020-12-01
阅读 6 分钟
5.7k
(path: "/path", methods: ["get"])是 php8 的新语法,在传参的时候可以指定参数名,不按照形参的顺序传参。

php8新特性详解及示例代码

2020-11-30
阅读 3 分钟
1.7k
更精简的构造函数和类型指定 {代码...} 构造函数可以简写成这样了,用更少的代码初始化属性。传参的时候,可以指定key,不用管顺序,随心所欲。注解 {代码...} 执行 {代码...} 官方文档给出的<<>>语法是错的,让我很郁闷,还是去源码中找的测试用例。nullsafe语法糖新增nullsafe,很方便的东西,代码又可以...

把 windows terminal 添加到右键菜单

2020-11-04
阅读 1 分钟
6k
Win+R,输入 "regedit",新建注册表项 "计算机\HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\在此处打开 Windows Terminal\command",在右侧默认项编辑输入 wt -d "%V"

php8的扩展arginfo生成工具及工具初体验

2020-09-15
阅读 3 分钟
4.2k
php8提供了非常方便的扩展函数或类参数信息的生成工具。只需要维护一份xyz.stub.php,就可以使用工具生成 xyz_arginfo.h。毫无疑问,这种方式,又降低了广大 phper 开发扩展的门槛,更易维护。上手体验:生成扩展骨架。 {代码...} 随便添加一个函数,更改 test.stub.php。 {代码...} 重新生成 test_arginfo.h。 {代码......

由php中文文档一处错误引发的思考

2020-05-09
阅读 9 分钟
2.2k
PHP官方中文文档: [链接] 类常量这一节 说类常量不能为数学运算的结果。但我业务代码中这样写是完全可行的 {代码...} 我特意去看了源码,词法解析文件里面: {代码...} {代码...} {代码...} 很明显,只要符合expr的定义,在词法解析阶段就不会有问题。 {代码...} 这样写是完全可行的,但有的人就会问了,为什么我这样写...

彻底搞懂php的后期静态绑定

2020-04-27
阅读 1 分钟
2.4k
上面这个抽象类的getInstance静态方法中,我想实例化一个子类,怎么办?除了new static, 没有别的方法,因为你根本不知道子类的名称到底是什么,它可以被命名成任意合法的名称。还有其它场景,比如说在父类的静态方法中调用子类的静态方法,怎么办?也是一样static::childMethod()

学习swoole的方式建议

2020-04-20
阅读 2 分钟
2.9k
这些框架本质上都是swoole的api caller+composer第三方库整合商。不是说这些框架没有学习的价值,只是最核心的东西是swoole本身,而不是基于swoole的框架。弄明白了swoole为啥高效的原因,这些框架信手拈来就可以用,自己开发一个并非难事。

php使用goto实现自动重启swoole、reactphp、workerman服务

2020-04-13
阅读 2 分钟
3.3k
这时候就产生了一个想法,我开一个主进程监控文件变化,再开一个子进程运行swoole服务。主进程监听到文件变化之后,干掉子进程,然后再开一个子进程运行swoole服务. 子进程如果想优雅地退出,安装个信号处理器,在退出之前做一些操作。

phper学习spring第二章

2020-03-11
阅读 7 分钟
2.2k
在开始看spring的注解之前,我想了想PHP注解及其处理方法,PHP不支持注解语法,只能用注释来模拟,而PHP的反射类是可以拿到类和方法以及属性的注释信息,再通过解析注释信息拿到相应的注解。解析出注解之后,调用对应的注解处理程序。这种方式的弊端我想应该是无法在PHP编译阶段发现错误,一般要到运行时,解析注解的阶...

phper学习spring第一章

2020-03-10
阅读 3 分钟
3.1k
最近疫情在家,就想着研究一下spring。我是第一次学习JAVA,当然也是第一次学习spring框架,个人认为先把helloworld项目跑起来,建立起信心,这样才有利于接下来的学习。所以我会力求把小细节说清楚,免得和我一样的新手,还没有开始学习JAVA和spring,先放弃安装环境了。先装JDK和IDE,这个就是下一步下一步的事情,IDE...

isset在php5.6-和php7.0+的一些差异

2018-08-21
阅读 2 分钟
3.1k
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

PHP异步编程,异步的本质

2017-04-19
阅读 2 分钟
5.6k
实现异步的方式有哪些? swoole提供了一些异步方法, 那它们底层是用哪种方式实现的呢? 实现异步的方式有: 线程方式 进程方式 IO复用 线程方式和进程方式类似, 有异步请求时, 开一个线程或者进程, 获取到数据后, 线程间可以直接共享数据. 进程间可以通过进程通信机制,如共享内存,管道等方式进行数据传送. 思路很简单, 可...

workerman源码分析

2017-03-20
阅读 1 分钟
3.4k
workerman workerman源码分析 前置知识 事件驱动Libevent 信号 守护进程 Socket编程 序言

守护进程

2017-03-20
阅读 1 分钟
3.2k
守护进程 为什么需要守护进程呢? 普通进程在运行时可以被控制终端发出的信号打断, 而守护进程由于脱离了控制终端, 所以不会被其打断. 守护进程创建的标准流程 调用umask设置文件创建的掩码 fork子进程并关闭父进程 调用posix_setsid创建新会话 把当前工作目录切换为根目录 不需要的文件描述符全部关闭 标准输入输出错误...

用deviceone快速撸一个APP

2017-03-08
阅读 1 分钟
2.8k
deviceone的开发方式非常类似于VB, 拖控件, 绑定事件. 再者是基于javascript, 所以上手非常容易. 我花了一天时间,快速开发了一个简单的APP。

写守护进程时, 需要fork两次吗?

2017-03-03
阅读 3 分钟
4.9k
在glibc源码中我找到了daemon函数的实现: {代码...} 这个把普通进程变成守护进程的函数,很明显只fork了一次. 同样的代码还有nginx: {代码...} 也只fork了一次, 那为什么有的文章中却说要fork两次呢? 分析如下: 第一次fork的作用是为setsid服务的, 因为执行setsid的进程不能是session leader, 所以fork一个子进程, 在子...

利用swoole_process和eventloop实现php异步编程

2017-01-06
阅读 2 分钟
5.3k
思路很简单: 开一个子进程处理异步事务,处理完之后,通过管道告诉父进程,并将返回数据写入管道 代码如下: AsynHttpClient.php {代码...} index.php {代码...} api.php {代码...} {代码...} 可以看到运行结果是1在前面, 证明是异步执行的. 其实通过php中的pcntl_fork和libevent也可以实现, 不需要借助swoole, 但是swool...

使用composer创建yaf项目

2016-12-06
阅读 1 分钟
5.1k
为了让yaf可以与composer协同工作, 我做了一些搬运和整合的工作, 制作了一个yaf模板. 可以使用composer create-project进行项目初始化的工作. 主要做的工作如下:

一个PHP的小技巧

2016-10-19
阅读 1 分钟
1.9k
如何实现一个耗时的函数或者类的方法多次调用时, 第一次进行运算, 以后再调用这个函数时, 直接返回结果? {代码...} 一个小技巧能提高不少性能

php开发人员城市分布情况

2016-10-17
阅读 1 分钟
3k
从鸟哥的博客的访问者分布看PHP开发人员分布, [链接] 没有看过鸟哥博客的也算PHP开发者? 北上广深杭PHP开发者比较多,南京 成都 武汉 郑州紧随其后, 找工作的同学可以去这几个城市, PHP工作应该相对好找.