目录 前言 安装Composer composer常用命令 selfupdate dumpautoload install update require create-project phpStudy集成环境下 安装composer失败 前言 别再到处搜PHP类扩展包了,对于现代语言而言,包管理器基...
网站建设
如何理解PHP程序执行的过程原理
目录 概述 加载php.ini配置 加载php内置扩展 概述 Web环境我们假设为Apache。在编译PHP的时候,为了能够让Apache支持PHP,我们会生成一个mod_php5.so的模块。Apache加载这个模块,在url访问.php文件...
浅谈如何提高PHP代码的质量
目录 概述 1 必备条件 2 构建工具 3 静态代码分析 4 代码风格 5 复制 / 粘贴检测器 6 想要真正深入的代码分析? 概述 我们可以将此归咎于许多原因,但这肯定不仅仅是因为 PHP 生态系统...
浅谈如何提高PHP代码质量之单元测试
目录 1、单元测试 2、应该使用哪个框架? 3、如何设置测试? 构建测试对象 在模拟中匹配运行时参数 匹配运行时异常 4、在哪里可以找到更多的例子? 1、单元测试 通过实现单一责任...
浅谈如何提高PHP代码质量之端到端集成测试
目录 概述 1、测试的结构 2、上下文 3、如何使用Behat 总结 概述 在这里,我们可以使用为行为驱动开发构建的工具——官方 PHP 的 Cucumber 实现——Behat。我们可以通过运行以下代码来安...
浅谈swoole的作用与原理
目录 PHP 中的 Node ?Swoole 到底是什么? 如何让它运行? 使用 Docker 运行 Swoole Swoole 可以做什么? 基于 Swoole 实现 HTTP 服务 HTTP Server 标准 在 Websocket 服务中使用 Swoole 使用 Swoole 时遇到的...
详解Swoole跟传统的web开发的区别
目录 一、swoole的运行模式 1.1、传统web开发模式 1.2、Swoole运行模式 1.3、使用swoole和传统php开发的缺点 二、注解机制 三、容器 3.1、什么是容器? 3.2简单的通过代码理解依赖注入 3.3、为...
如何在Mac上通过docker配置PHP开发环境
目录 使用docker-compose配置开发环境 什么是docker-compose 目录结构 MySQL 测试 php Dockerfile php服务中遇到的坑 php.ini Nginx app.conf 启动 连接数据库 总结 使用docker-compose配置开发环境 一般一个基...
详解php中流行的rpc框架
目录 什么是RPC框架? 远程调用原理 远程调用的好处 RPC与Socket有什么区别? RPC与REST有什么区别? php中流行的rpc框架有哪些 phprpc 安装 开始使用 yar 下载安装 开始使用 什么是RPC框架?...
详解Go与PHP的语法对比
目录 概述 数据类型 变量 类型转换 数组 Maps 对象类型 函数 控制语句 If-Else Switch For 循环 While 循环 Foreach/Range 概述 Go 是由 Google 设计的一门静态类型的编译型语言。它有点类似于 C,但...
浅谈Laravel中使用Slack进行异常通知
目录 概述 安装 maknz/slack-laravel 包 配置 调整 AppExceptionsHandler 类的 report 方法 概述 通常,我们可以依靠用户反馈、经常查看程序日志来发现程序存在的问题。但这要么不可靠要么不及时...
如何用RabbitMQ和Swoole实现一个异步任务系统
目录 系统介绍 事件生产者 任务调度器 消费者 正常任务 延迟任务 自定义调度器 系统介绍 从图中可以看到,我们这个系统是一个基于事件的异步任务系统。就是说当一个事件产生时,...
详解Laravel服务容器的优势
目录 概述 使用服务容器的优势 例一、发送邮件 例二、实现单例模式 例三、旅行者去旅行 总结 概述 laravel服务容器就像一个高度自动化的工厂,你需要的东西,定制好模型,使用特定...
浅谈PHP7中的一些小技巧
目录 相同的命名空间,相同的 use 常量可以是数组 太空船操作符 数组的第一 / 最后一个键 (PHP 7.3) 数组延展操作符 (PHP 7.4) 箭头函数 (PHP 7.4) 常量的可见性 (PHP7.1) Constant visibility (PHP7.1...
浅谈laravel中间件的创建思路
Laravel 中间件提供了一种机制在不修改逻辑代码的情况下,中断原本程序流程,通过中间件来处理一些事件,或者扩展一些功能。比如日志中间件可以方便的记录请求和响应日志,而不...
浅谈减少Hyperf框架的扫描时间
目录 原因 解决办法 写在最后 原因 Hyperf框架为了防止用户更新组件后,代理缓存没有更新导致启动报错。增加了以下钩子。 { "scripts": { "post-autoload-dump": [ "init-proxy.sh" ] }} 而init-proxy.s...
浅谈Laravel中如何对大文件进行加密
我已经搜索过用于解决此问题的软件包或解决方案,并遇到了这个 Stack Overflow 回答和这个 PHP 解决方案,该解决方案基本上是 Stack Overflow 所描述的解决方案的 PHP 实现。 我决定创建一个...
分析Composer实现自动加载原理
目录 1. 入口文件 2. autoload.php 3. autoload_real.php 5. spl_autoload_register和spl_autoload_unregister函数 1. spl_autoload_register 函数 2. spl_autoload_unregister 函数 1. 入口文件 (/public/index.php)中引入了 autol...
浅谈一种Laravel路由文件划分方式
最初,我想到了利用路由组方法可以接收文件,这就是 laravel 在 RouteServiceProvider 处拆分路由的方式。 phpnamespace App\Providers;use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProv...
详解PHP如何读取大文件
目录 衡量成功 我们有什么选择? 逐行读取文件 文件之间的管道 其他流 过滤器 自定义流 创建自定义协议和过滤器 总结 衡量成功 唯一能确认我们对代码所做改进是否有效的方式是:...
如何使用PHP7的Yaconf
目录 简介 API Yaconf的配置项 配置的格式 样例 最后 简介 我见过很多的项目中, 用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各种各样的array, 还有甚...
如何在Laravel中验证zip里的文件
目录 概述 PHP 的libzip扩展 如何操作 ZIP 文件 集成到 Laravel 程序中 最佳实践 概述 如果我们希望用户上载 ZIP 文件,我们可以结合规则并像如下所示的内容使用: return [ 'file' = 'required|f...
如何使用PHP对象POPO来优化你的代码
目录 我们有如下的问题 结论 我们有如下的问题 1.那么在另一种编程语言中 POJO 的名字是什么呢? 关于普通旧对象的约定是 “普通旧编程语言对象”。如果你在 Ruby 上,你可以调用...
如何从防护角度看Thinkphp历史漏洞
目录 Thinkphp RCE漏洞和扫描流量 漏洞原理回顾 Thinkphp漏洞全网扫描 总结 Thinkphp RCE漏洞和扫描流量 漏洞原理回顾 5.0.x版本漏洞 原理在于Thinkphp处理请求的关键类为Request(thinkphp/library/thi...
如何使用Laravel Eloquent来开发无限极分类
目录 概述 数据库迁移 Eloquent 模型和关联关系 路由和控制器方法 视图和递归子视图 概述 我们会创建一个微型项目来展示儿童商店的分类,总共有 5 级,如下: 数据库迁移 简单的数据...
分析五个Laravel Dusk的使用技巧
目录 1. 填充隐藏字段 2. 模拟 HTML 地理位置 3. 使用 XPath 选择器 4. 整页截屏 5. 访问浏览器错误日志 1. 填充隐藏字段 在测试某些 JS 组件时 (例如自动完成,日期选择器等) ,可能需要编写...
详解Swoole TCP流数据边界问题解决方案
目录 1. 数据发送过程 2. 什么是数据边界 2.1 代码演示 3.EOF 解决方案 3.1 open_eof_check 3.2 open_eof_split 3.3 open_eof_check 和 open_eof_split 差异 4. 固定包头 + 包体解决方案 5. 总结 6. 扩展知识 6.1 字...
详解PHP框架EasySwoole
目录 安装 运行 编辑根目录下的composer.json 文件 最后执行composer dumpautoload 生命周期 配置文件说明 配置操作类 添加用户配置项 生产与开发配置分离 动态配置 服务管理脚本 文件热加载...
详解Laravel制作API接口
需要注意的是:API有它的具体用途,我们应该清楚它是干啥的。访问API的时候应该输入什么。访问过API过后应该得到什么。 在开始设计API时,我们应该注意这8点。后续的开发计划就围...
PHP实现rar解压读取扩展包小结
作为压缩解压方面的扩展学习,两大王牌压缩格式 rar 和 zip 一直是计算机领域的压缩终结者。rar 格式的压缩包是 Windows 系统中有接近统治地位的存在,今天我们学习的 PHP 扩展就是针对...
分析PHP的垃圾回收机制
如果用过C语言,那么申请内存的方式是malloc或者是calloc,然后你用完这个内存后,一定不要忘了用free函数去释放掉,这就是传说中手动垃圾回收,一般都是扫地神僧用这种方式。很多...
PHP屏蔽错误的方法总结
1、@屏蔽法 @在php中一个抑制错误的符号,即便是你开启了报错功能,只要在错误语句之前加上@符号,便可屏蔽了错误信息。使用@抑制错误之前,会出现一个警告错误。 2、error_reporti...
详解PHP接口签名验证
目录 概览 常用验证 单向散列加密 对称加密 非对称加密 密钥安全管理 接口调试工具 在线接口文档 扩展 小结 概览 在设计签名验证的时候,一定要满足以下几点: 可变性:每次的签名...
详解PHP解决守护进程Redis假死
目录 一、一个简单的守护进程示例 二、一个不再假死(伪活)的 Redis 常驻进程示例 一、一个简单的守护进程示例 php$redis = new \Redis();$redis-connect('localhost', 6379);$redis-auth('xxxxx'); // Redis 密码...
详解PHP多进程消费队列
目录 引言 nginx进程模型 进程设计 进程信号量设计 PHP安装修信号量 信号量和系统调用 daemon(守护)进程 命令设计 启动命令 强制停止命令 强制重启命令 平滑停止命令 平滑重启命令...
Fatal error: 'break' not in the 'loo
今天本地改代码改完做测试发现现在的文件中打开是Break' not in the 'loop' or 'switch' context“这样的;当时一脸懵逼,这是一个老项目最近也没动啊怎么回事,然后去线上测试是好的弄得我...
PHP中strval()函数实例用法
1、函数说明 strval()函数是PHP中的内置函数,用于将任何标准值(字符串、整数或双精度)转换为字【本文来源:http://www.1234xp.coml转载请保留出处】符串。我们不能在数组或对象中使用st...
php的declare命令及用法详解
定义 php中的declare结构用来设定一段代码的执行指令 declare用于执行3个指令:ticks,encoding,strict_t【文章出处:国外服务器 转发请说明出处】ypes 作用域 declare结构用于全局范围,影响到其后...
PHP如何初始化PDO及原始SQL语句操作
目录 PDO 实例 dns 参数 PDO 对象属性 查询语句 普通查询及遍历 查询结果集(数组、对象) 查询结果集(类) 查询结果集(指定字段) 增、删、改操作 增加操作 修改操作 删除操作 总结...
PHP PDO预处理语句及事务的使用
目录 预处理语句功能 事务能力 总结 预处理语句功能 预处理语句就是准备好一个要执行的语句,然后返回一个 PDOStatement 对象。一般我们会使用 PDOStatement 对象的 execute() 方法来执行这...
PHP 实现数组分页
目录 array_slice array_chunk LimitIterator 参数错误时的表现 总结 今天,我们就来学习一下可以实现这个能力的一些函数技巧。 首先,我们还是准备好测试数据。 $data = [ 'A', 'B', 'C', 'D', 'E',...
php 使用预处理语句操作数据库
目录 什么是预处理语句? PDO 操作预处理语句 mysqli 操作预处理语句 总结 什么是预处理语句? 预处理语句,可以把它看作是想要运行的 SQL 语句的一种编译过的模板,它可以使用变量参...
详解PHP的Sodium加密扩展函数
目录 AEAD_AES_256_GCM 加解密 信息签名 Hash 总结 参考文档 Sodium 扩展在 PHP7.2 后是跟随 PHP 源码一起发布的,只需要在编译的时候加上 --with-sodium 即可安装成功。如果是 PHP7.2 之前的版本,需...
php如何用PDO操作大数据对象
目录 什么是大数据对象 直接操作大数据对象会怎么样? 正确的姿势 总结 什么是大数据对象 “大”通常意味着“大约 4kb 或以上”,尽管某些数据库在数据达到“大”之前可以轻松地...
Laravel8 使用图形验证码做登录功能的实现
一、 安装扩展包 composer require gregwar/captcha 二、定义路由 //路由分组Route::group(['prefix'='admin','namespace'='Admin'],function (){ //登录显示 name给路由起一个别名 Route::get('login','LoginController@index'...
php生成用户密码的两种方式
目录 一、md5密码 二、hash密码 PS:php生成随机密码的几种方法 方法一: 方法二: 方法三: 方法四: 在用户系统中,生成用户的密码是很重要的,而简单的密码必然给一些不法用户开...
laravel添加角色和模糊搜索功能的实现代码
一、添加角色 1.1 角色添加显示页面路由(get) // 角色添加页面显示Route::get('role/add', 'RoleController@addindex') - name('admin.role.add'); 1.2 角色添加页面控制器(get) public function addindex () { ret...
详细分析PHP7与PHP5区别
1、php标量类型和返回类型声明 #主要分为两种模式,强制性模式和严格模式declare(strict_types=1)#1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。 2、NULL合并...
Linux系统下安装PHP7.3版本
请先安装依赖包 $yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncu...
PHP实现两种排课方式
两种排课方式: 固定每周的固定时间上课 (例:共上20节,每周六、周日早上8点-10点上课。假如今天周六凌晨1点,那么排课也需要从今天开始) 总共上几个周,每周上课时间比较个性...