初识PHP
现在算算接触PHP也有三个月了,之前学过java,所以在学习PHP上还算比较顺利,代码写的越多,运行的越多,踩过的坑越多,对程序的理解就会越深刻。
PHP入门很容易,语法很简单,但我不说PHP很容易。难易都是相对的,相对于Java来说PHP确实要简单些,但也不是花一点时间就可以学好的。
先附一张从网上找的知识导图(若侵删):
图表 1 PHP导图
学习一门语言,并不仅仅是了解它的语法和记住几个关键字就可以的,还需要了解他生态(框架、特性)和适用场景。目前我的学习还比较浅,我会针对我的理解和参考写下回顾性的总结,姑妄听之。
PHP特性
PHP是Hypertext Preprocessor的缩写,是一种计算机脚本语言(Script languages)。脚本语言不需要像编程语言那样在编译时生成二进制可执行文件,而是直接对写好的PHP代码执行以达到效果。和同样的脚本语言JavaScript一样,PHP也是一种解释型语言,即可直接解释执行。与其说PHP是编程语言,不如说是一组命令。正因为他是一组命令,可嵌入到Html中,实现网页特效,于是PHP被广泛应用到Web当中。
总结下来就是,PHP简单、热部署、开发效率高、性能弱(解释性语言,进程管理)。
因为是弱类型语言,所有也无需指定返回类型,而PHP的数组处理非常强(可以当做map、list来用,底层实现是hashmap),一版函数以数组进行计算和返回,如果返回结构体改变,直接修改数组即可,动态拓展性极强。
PHP的面向对象相对较弱,虽有类的概念,但目前实际开发起来,设计模式和面向对象的技巧用的并不多。只会在部分单例和框架引入的时候会用到。
基于PHP语言的特性,是一门工具型的语言,可以用它很快速来搭建一些基础项目,运行一些简单的脚本等。
PHP的CGI
既然要用PHP进行WEB开发,自然绕不开CGI,CGI本身是种HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,与语言本身无关,FastCgi是为了将CGI解释器保持在内存中(进程管理,类似进程池),不必每次请求都需要去fork以次,以此提高性能。而这种形式,需要每次处理都建立一个子进程,导致内存占用增多,对于高访问量的服务来说,开销就更大。而有是解释型语言,相较于其他通过socket多线程的服务的编译型语言(GO、JAVA等),性能和占用上来说捉襟见肘了。
但是为什么要叫PHP的CGI呢?因为PHP自带了FastCGI管理器,因为是常驻内存,php.ini等配置文件内容也被一并加载进来,尽管是动态语言,但是配置文件的修改也需要重新启动php-cgi才能生效。而PHP-FPM是 FastCGI 的进程管理器,只用于PHP,并自带了PHP解释器,这就构成了整个请求返回路径。
图表 2 PHP请求路径
Composer
Composer是一个包管理的工具,功能类似Java的maven,node的npm,根据composer.json文件下定义的版本和路径拉取对应的依赖。如果需要引入一些工具和框架,就可通过配置这个去拉取。
为了保持稳定,可以在内部搭建一套自己的源(防止依赖源挂掉或不稳定的情况),关于搭建源的方法还在学习中。
PHP开发技巧
理清了基本原理,接下来就是逻辑代码了,主要就是要熟悉语言的特性和常用,与其说是PHP开发技巧,不如说是一些通用的规范。
图表 3 入门PHP
总结
从开头的导图可以看出,目前我对PHP的学习还很浅,基本满足写一写业务逻辑的需求,更深层的东西,和需要牵扯到的其它的知识面还很缺乏,后续要拓宽自己的知识面,对整个体系有更深刻的理解,不断提升自己学习和总结的能力。
参考
https://www.zhihu.com/question/20377398
https://www.oschina.net/question/57579_50368
https://www.oschina.net/question/1579_49262?from=20120422
https://segmentfault.com/a/1190000009066688
https://www.jianshu.com/p/80e46a80fdbd