编译器可以粗略地分为几个简单的部分:词法分析器、语法分析器、代码生成器。其中语义分析器、代码优化器这些不影响本文示例功能。另外,本文的编译器生成的是字节码,因此还需要一个虚拟机来执行。
使用GitHub Actions编译方便不使用Docker等工具还要定制PHP版本的用户,降低了部署成本,只需要下载编译后的压缩包即可使用(前提是部署的环境跟编译的环境保持一致,也就是运行与yaml文件的dependence相同的命令解决依赖问题)。
PHP内置函数太多,记不住怎么办?尤其PHP 一直被人垢病函数名不统一,这就导致更不容易记忆了。这时候是不是在想,要是我随便定义一个变量,就能列出可以对其进行操作的函数就好了,虽然列出来也不一定知道用哪个,但起码一般情况下可以根据函数名猜到哪个才是要用的函数。例如$a = "Hello world";,我在IDE上输入$a->,IDE就能将可用函数显示出来。简单,这不就是面向对象吗?那就动手吧。
github带火了类似jekyll的静态博客生成器,可以将markdown文件转换为html文件,然后发布到网站上,对喜欢markdown简洁的人来说,简直太棒了,尤其现在大量的网站可以免费托管这种小型的博客,当然,我也是因github pages的服务而接触到它,懒人必备。
看到一个很有意思的项目 https://github.com/php-defer/php-defer,这个项目只用了10行左右的代码就实现了Go语言中的defer,看来灵活运用数据结构还是很重要的。项目源码如下: