PHP函数式编程:像搭积木一样写代码

简介: PHP函数式编程:像搭积木一样写代码

PHP函数式编程:像搭积木一样写代码

想象你在组装乐高,每个积木块都是独立的、功能单一的,通过组合它们就能创造复杂结构。PHP的函数式编程就是这种思维——把代码拆成纯净的"积木块"。

纯函数:不改变世界的函数

// 不纯的:依赖外部状态,结果不可预测
function calculateDiscount($price) {
   
    global $discount; // 外部依赖
    return $price * $discount;
}

// 纯的:输入决定输出,无副作用
function pureDiscount($price, $discount) {
   
    return $price * $discount;
}

纯函数就像数学公式,给定相同输入永远返回相同输出,不会偷偷修改数据库或发邮件。这让代码可测试、可预测,就像用同样的钥匙总能打开同一把锁。

不可变性:创建新世界而非修改旧世界

// 传统方式:修改原数组
$users = ['Alice', 'Bob'];
$users[] = 'Charlie'; // 原数组被改变

// 函数式方式:创建新数组
$newUsers = [...$users, 'Charlie']; // 原数组保持不变

不可变性避免了"蝴蝶效应"——一处修改意外影响其他地方。就像写文档时,我们创建新版本而不是直接修改原稿。

高阶函数:函数作为积木块

$prices = [100, 200, 300];

// 传统循环
$discounted = [];
foreach ($prices as $price) {
   
    $discounted[] = $price * 0.9;
}

// 函数式:map就像流水线传送带
$discounted = array_map(fn($p) => $p * 0.9, $prices);

PHP 8的箭头函数让这种写法更简洁。array_maparray_filterarray_reduce就像函数式编程的三剑客,让代码从"怎么做"变成"做什么"。

实践建议

从一个小函数开始:确保它纯、不依赖外部状态、不修改输入。慢慢你会发现,这样的代码像乐高积木一样,容易测试、组合和复用。PHP不仅是面向对象的,也是函数式的——关键在于选择合适的工具解决特定问题。

记住,最好的代码不是最聪明的,而是最清晰的。函数式编程帮你写出人见人爱的代码。

相关文章
|
3月前
|
人工智能 网络协议 Java
一文带你玩转 WebSocket 全链路可观测
在 AI 实时交互爆发的时代,WebSocket 成为核心协议。但其双向、长连接、流式传输特性,让传统链路追踪频频失效。阿里云 LoongSuite 基于 OpenTelemetry 标准,结合探针增强与自定义扩展,首次实现 WebSocket 全链路可观测,支持 Span 粒度控制、上下文透传、异步衔接与关键性能指标采集。
638 67
|
存储 人工智能 运维
阿里云 Tair 基于 3FS 工程化落地 KVCache:企业级部署、高可用运维与性能调优实践
阿里云 Tair KVCache 团队联合硬件团队对 3FS 进行深度优化,通过 RDMA 流量均衡、小 I/O 调优及全用户态落盘引擎,提升 4K 随机读 IOPS 150%;增强 GDR 零拷贝、多租户隔离与云原生运维能力,构建高性能、高可用、易管理的 KVCache 存储底座,助力 AI 大模型推理降本增效。
|
3月前
|
消息中间件 人工智能 NoSQL
AgentScope x RocketMQ:打造企业级高可靠 A2A 智能体通信基座
Apache RocketMQ 推出轻量级通信模型 LiteTopic,专为 AI 时代多智能体协作设计。它通过百万级队列支持、会话状态持久化与断点续传能力,解决传统架构中通信脆弱、状态易失等问题。结合 A2A 协议与阿里巴巴 AgentScope 框架,实现高可靠、低延迟的 Agent-to-Agent 通信,助力构建稳定、可追溯的智能体应用。现已开源并提供免费试用,加速 AI 应用落地。
473 36
AgentScope x RocketMQ:打造企业级高可靠 A2A 智能体通信基座
|
3月前
|
人工智能 安全 数据可视化
面向业务落地的AI产品评测体系设计与平台实现
在AI技术驱动下,淘宝闪购推进AI应用落地,覆盖数字人、数据分析、多模态创作与搜推AI化四大场景。面对研发模式变革与Agent链路复杂性,构建“评什么、怎么评、如何度量”的评测体系,打造端到端质量保障平台,并规划多模态评测、可视化标注与插件市场,支撑业务持续创新。
828 38
|
3月前
|
存储 缓存 NoSQL
阿里云 Tair 联手 SGLang 共建 HiCache,构建面向“智能体式推理”的缓存新范式
针对智能体式推理对KVCache的挑战,阿里云Tair KVCache团队联合SGLang社区推出HiCache技术,通过多级存储卸载与全局共享机制,实现缓存命中率翻倍、TTFT降低56%、QPS提升2倍,构建面向长上下文、高并发、多智能体协作的下一代推理缓存基础设施。
706 27
阿里云 Tair 联手 SGLang 共建 HiCache,构建面向“智能体式推理”的缓存新范式
|
3月前
|
SQL 分布式计算 算法
别再一把梭哈了:聊聊文件格式里的压缩取舍——Snappy 和 Zstd 到底怎么选?
别再一把梭哈了:聊聊文件格式里的压缩取舍——Snappy 和 Zstd 到底怎么选?
367 4
|
3月前
|
机器学习/深度学习 算法 算法框架/工具
基于yolov8的深度学习垃圾分类检测系统
本研究针对传统垃圾分类效率低、准确率不高等问题,提出基于YOLOv8与Python的深度学习检测系统。通过构建高质量标注数据集,利用YOLOv8强大的目标检测能力,实现垃圾的快速精准识别,提升分类自动化水平,助力环境保护与资源回收。
|
3月前
|
存储 弹性计算 人工智能
阿里云16核32G服务器价格多少?今年阿里云 16 核 32G 云服务器优惠配置价格及测评参考
阿里云16核32G服务器价格多少钱?今天给你提供阿里云16核32G云服务器的详细测评。关于阿里云16核32G云服务器的价格:阿里云16核32G云服务器的价格因不同的实例类型和配置选项而有所不同。一般来说,这种高配置的服务器适用于需要处理大规模数据或运行高负载业务的企业级用户。 具体的价格取决于服务器的实例类型、存储配置、网络带宽等因素。您可以访问阿里云的官方网站或联系其销售代表,获取更详细的报价和配置选项。请注意,这里提供的信息可能不是最新的,因为阿里云的价格和促销活动可能会随时调整。为了获取最准确的价格和配置信息,这款服务器具体详情建议参考。。
|
3月前
|
存储 Java 关系型数据库
工商银行模拟器,java教学演示版分享~~~
前言:为什么要写这个模拟器? “老师上课讲的银行系统太抽象了!” “面试被问到银行系统设计直接懵了” 你是不是也有这样的烦恼?