用zephir写PHP扩展?

最近用zephir写了一个PHP扩展,github:https://github.com/kcloze/medoo-zephir
写这个扩展主要是想提升PHP版的medoo性能,这个class大概1000行PHP代码,翻译成zephir花了不少时间,当然我采取了偷懒的做法,先用php-to-zephir翻译成zepir,然后慢慢调试,终于编译成功,但是bug还是很多,最后有想放弃的冲动,根本不能用于生产环境。
用了才知道zephir的局限性真是蛮多的,优缺点如下:
优点:

  • 所有代码向对象方式,跟写PHP除了语法差异,编程思维一样
  • 编译起来很简单,修改zep文件之后zephir build就可以安装扩展

缺点:

  • 报错相当粗暴,不会告诉你哪一行代码错误,只是说编译失败
  • 调试方式单一,基本上跟PHP调试差不多,靠echo和var_dump,调试效率很慢
  • 很多PHP的特性不能用,比如函数方法传参数不能用引用,到官方论坛搜索了一下,可以用但是非常不建议,最后我是改成对象属性解决。
  • 性能并不一定比纯PHP好

总之尝试过这个项目,感觉zephir要精通还是点难度,有点鸡肋感,肯定不比写PHP省心,phalcon团队用zephir应该算最优秀的相关应用了,如果想继续深入,可以直接看zephir的代码。目前来看zephir是为phalcon而生,很难具有通用性,非常适合写框架,其他领域能不用就不要用吧,要想写PHP扩展,还是老老实实学好C。