PHP扩展库概念

PHP 包/库的概念有几种形式:

  • composer,目前最流行的 php 包管理器,用于管理 php 代码之间的依赖。
  • pear,上古时代的产物,现在完全被 composer 取代。
  • pecl,这部分的扩展库是通过 C/C++ 编写的,跟 php 层面没太大关系。
  • zephir,相比较 pecl,zephir 写扩展包简单多了,目前除了 phalcon,没有其他流行的扩展库是用 zephir 编写的。

一般来说”包“指的是 PHP 层面的,”扩展库“指的是 C 层面的。关于扩展库,官方文档有汇总的链接 扩展库列表/归类 - Manual,按归属分:

  • 核心扩展库,并非真正的扩展库,它们属于 PHP 内核的一部分,不能通过编译选项将其排除。
  • 绑定的扩展库,绑定在 PHP 发行包中。
  • 外部扩展库,已经包含在PHP中但是需要编译它们才能使用,并且可能需要额外的扩展库。
  • PECL 扩展库,可以通过 pecl 命令安装,或者下载源码自行编译安装。

感兴趣的自行点击翻阅,这里说几个容易被忽略和开阔视野的扩展库:

  • Phar,为 CLI 开拓了广阔道路,如 composer.phar, deployer.phar, wp-cli.phar 这些都是通过 phar 打包的。
  • SPL,PHP 标准库,补充了 PHP 在数据结构上的不足,学习数据结构的可以多看看这部分的章节。
  • Streams,PHP 中 stream 概念容易被初学者忽略,各种 io 操作(文件操作,c/s 通信等等)其实都是 stream 操作,在 socket 编程时,理解 stream 的概念非常重要。
  • Event,事件驱动,非阻塞式 I/O,其他的 ev/uv/eio 之类的想了解也可以看看。
  • pthreads,多线程,php-zts 层面的,7.2 之前是不安全的,目前还在发展中。
  • V8Js,提供跨平台 js 解析,可以把很多 js 库拿来用,尤其在组件化前端的整合上,提供 SSR 支持。
  • Swoole,虽然结合各种 PHP 提供的进程控制扩展库也能实现 swoole 的各方面需求,但是性能和完整性还是不能和纯 C 编写的 swoole 相比,不过 swoole 目前还存在很多问题,尤其在文档普及,社区发展上,国际化也还有很长路要走。
  • Yar,RPC框架,不过暂时只有 PHP 版本,和 REST 不同,RPC 可以走 TCP。另外还可以看 Hprose 家的各种语言实现,非常给力,性能来说应该 Yar 更好一点。

PHP 已经不局限在 fpm 模式(Web),cli 下的可玩儿性也越来越丰富,有很多扩展库需要在 cli 模式下才能发挥威力。

猜你喜欢

转载自blog.csdn.net/Thinking771470736/article/details/80501558
今日推荐