PHP进化史:PHP3 已经变成了一门语言

PHP , 原理232 字

1997年中PHP的发展也已经有了一些变化,他已经从Rasmus的宠物项目变成了更加有组织的团体项目。语法分析引擎也由Zeev Suraski 和 Andi Gutmans进行了重新改写,这个引擎构成了PHP3的基础。PHP/FI中的大部分通用代码都经过改写后引入了PHP3中。

目录结构上,PHP 越来越工程化。

  • serverapi: 抽离出了 PHPSAPIs。
  • win32:支持了 Windows
  • VarTree 被替换成了大名鼎鼎的 HashTable,到现在直接变成了恶臭的 PHP 八股文必考内容。
  • convertor 将 PHP/FI 的代码转换为 PHP3 代码的工具,其核心原理是 yacc 和 lex。
  • DL:扩展,在 php3 中开始支持扩展啦!

变量

hashtable 出现了,代替了原来的 VarTree

typedef struct hashtable {
    uint nTableSize;
    uint nHashSizeIndex;
    uint nNumOfElements;
    uint nNextFreeElement;
    uint(*pHashFunction) (char *arKey, uint nKeyLength);
    Bucket *pInternalPointer;    /* Used for element traversal */
    Bucket *pListHead;
    Bucket *pListTail;
    Bucket **arBuckets;
    void (*pDestructor) (void *pData);
    unsigned char persistent;
} HashTable;

在 PHP 中 HashTable 中非常重要,在 PHP/FI 中函数被保存在一个链表中,但是链表的时间复杂度是 O(N),在 PHP3 中,由于出现了 HashTable,其查询时间复杂度是 O(1),这样用 HashTable 代替链表存储函数也就成了必然。

PHPAPI int _php3_hash_add_or_update(HashTable *ht, char *arKey, uint nKeyLength, void *pData, uint nDataSize, void **pDest, int flag)
maksim
Maksim(一笑,吡罗),PHPer,Goper
OωO
开启隐私评论,您的评论仅作者和评论双方可见