phar为何没有被广泛使用?

PHP5.3 之后支持了类似 Java 的 jar 包,名为 phar。用来将多个 PHP 文件打包为一个文件。这个特性使得 PHP
也可以像 Java 一样方便地实现应用程序打包和组件化。一个应用程序可以打成一个 Phar 包,直接放到 PHP-FPM 中运行。

但是除了composer.phar本身以外,从我实际观察各种PHP开源项目以及composer上的各种包的源代码来看,好像这个phar并没什么人用啊,并不像java的jar包一样用途那么广泛。

阅读 7.2k
4 个回答

这个的确是推广的不怎么样,大家更喜欢直接复制一个包使用,因为学习的时候就没有这么系统规范吧,加上人的惰性,很少人去学习如何使用composer

新手上路,请多包涵

PHP的程序员思维偏向于开源,能看到源代码才放心(虽然很多都没看)

估计都怕有坑吧,哈哈

应该是历史原因。

php 从最初的 cgi 以及 apache mod 运行模式,到后来的 php-fpm 运行模式,都是直接使用源文件运行,直到 5.3 才引入了 phar。

并且 phar 之间如果作为包管理,并不能像 java 那样简单的设置一个扫描路径就行了,php 的类自动加载器和命令空间规范近几年才开始差不多稳定下来,实际上仍然是可以自由设定的,更别说 phar 和 phar 之间的依赖到现在也没有个方法,说白了还是历史原因导致一直不重视这一块。

而且 php 的 phar 只是打包了源码,并不像 java 那样编译成 class 文件。

php 如果要做到 phar 流行,至少要做到以下和点:

  1. 通过 PSR 或官方之类的标准限定 phar 包之间的依赖方式。
  2. 对 php-fpm 运行更友好的设定。
  3. 支持编译成 Opcode 并打包成 phar,而不是不相关的源码全带了进来(现在 composer 就是)。

如果做不到以上几点,想 phar 流行起来挺难,而且也没多大意义。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题