PHP三月初学

初识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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值