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 编译器的开发工作。

相关推荐
leo__5206 小时前
在Ubuntu 22.04系统中无需重启设置静态IP地址
tcp/ip·ubuntu·php
爱隐身的官人11 小时前
ctfshow - web - 命令执行漏洞总结(二)
php·命令执行
悠悠~飘1 天前
php简介(第一天打卡)
php
久绊A1 天前
Hydra-SSH 破解安全防范
开发语言·php
黑白世界46481 天前
开源分享: php-tools php gui的一次尝试
后端·php
2503_928411561 天前
9.8 ajax+php基础语法
ajax·okhttp·php
普通网友1 天前
支持二次开发的代练App源码:订单管理、代练监控、安全护航功能齐全,一站式解决代练护航平台源码(PHP+ Uni-app)
安全·uni-app·php
yenggd2 天前
centos系统apache支持php配置
centos·php·apache
ytttr8732 天前
PHP中各种超全局变量使用的过程
开发语言·php
名誉寒冰2 天前
TCP, 三次握手, 四次挥手, 滑动窗口, 快速重传, 拥塞控制, 半连接队列, RST, SYN, ACK
网络·tcp/ip·php