PHP核心开发者Nikita的首次提交,就实现了个寂寞啊

Nikita Popov 曾是 PHP 社区中备受尊敬的核心开发者之一。几年间,他深度参与了性能优化工作,一边不断实现新功能,一边修复历史遗留的大量错误,是把 PHP 从"老旧脚本语言"推动为"现代编程语言"的关键人物之一。

Nikita 可谓年轻有为,据说还在高中时期就开始参与 PHP 开发,首次贡献是在 PHP 5.5 版本中。

我们不禁好奇,这位才华横溢的开发者第一次会向 PHP 代码库提交哪些内容?下面,我们就来看看 Nikita 的首秀吧,了解他是如何开启这段非凡的开源旅程的。

以邮箱为关键词在提交日志中进行搜索,可以发现他首次提交的时间是 2012 年 5 月 20 日。不知道当时高中毕没毕业。

这次提交主要新增了 2 个文件 zend_generators.czend_generators.h,并对 Makefileconfigure 等构建脚本文件做了相应的修改。从注释来看,Nikita 的首次提交只是添加了没有任何功能的、一个名为 Generator 的内置类 。文件 zend_generators.c 中的代码也验证了这一点。

c 复制代码
#include "zend.h"
#include "zend_API.h"
#include "zend_generators.h"

ZEND_API zend_class_entry *zend_ce_generator;

static const zend_function_entry generator_functions[] = {
       ZEND_FE_END
};

void zend_register_generator_ce(TSRMLS_D) /* {{{ */
{
       zend_class_entry ce;

       INIT_CLASS_ENTRY(ce, "Generator", generator_functions);
       zend_ce_generator = zend_register_internal_class(&ce TSRMLS_CC);
       zend_ce_generator->ce_flags |= ZEND_ACC_FINAL_CLASS;
}
/* }}} */

换句话说,Nikita 的首次提交,只是让我们可以在代码中写出 <?php new Generator(); ------ 仅此而已,new 出来的对象没有任何作用。

如果你对 PHP 扩展开发稍有了解,会发现这几行代码是模板化的"公文格式":定义一个类、注册类名、绑定方法,这套流程任谁来写都是这样。真正透露出一点"作者痕迹"的,只有两个地方:一个是类名 "Generator",另一个是 zend_ce_generator->ce_flags |= ZEND_ACC_FINAL_CLASS;,表明 Generator 这个类无法被继承。

尽管这次提交看起来非常朴素,甚至可以说简陋,却悄然拉开了一个重要特性的序幕------生成器(generators)。这项特性随着 yield 关键字在 PHP 5.5 中正式落地,大大丰富了语言的表达力。

正如所有伟大的旅程都始于第一步,Nikita 的这次"空提交"似乎也预示着他在 PHP 语言演进中的关键角色。

Nikita Popov 目前是 Red Hat 的高级软件工程师,主要从事 LLVM、Clang 和 Rust 编译器的开发工作。

相关推荐
ShiXZ2131 小时前
网络调试四剑客:ping / telnet / nc / netstat 速查指令集
运维·开发语言·网络·php
weixin_BYSJ19873 小时前
springboot小区物业管理小程序---附源码45555
java·javascript·spring boot·python·django·flask·php
2601_965798473 小时前
Plastic Surgery Clinic Web Setup: Deploying Rejuvita WordPress
php·theme·wordpress
2601_965798475 小时前
Contractor Web Setup: Deploying Bathrooms & Kitchens Theme Fast
前端·web3·php·wordpress
小新讲网安7 小时前
WiFi安全攻防实战:WPA3新协议与传统破解技术全解析
开发语言·网络·安全·php·漏洞·nmap·漏洞检测
90后小陈老师18 小时前
PHP 配置默认值失效排查实录:isset 兜底遇上表单空串回填,首页文案是怎么集体消失的
开发语言·php
AC赳赳老秦1 天前
OpenClaw 多源采集公开行业数据:从原始信息到研究报告初稿的自动化实践
java·c语言·c++·python·php·deepseek·openclaw
想要成为老金高手1 天前
Nginx、PHP、Memcache、Tomcat 与 OpenResty 实验汇总
nginx·php·memcached
新鲜势力呀1 天前
深入理解 Elliot CUDA 编程核心:PHP 实现 CUDA 并行计算思想与实践
android·开发语言·php
qq_543447821 天前
主流域名解析(权威 DNS)服务企业
运维·服务器·开发语言·网络·php