【闲聊PHP】编程界的萝莉小美女--PHP
01 前言--上了贼船
不知道何时就上了PHP的贼船了,开始了web的开发,记得差不多两年前我还是做传统电子行业的人,就是嵌入式的方向,那时在天津或摆弄手机,或下煤窑摆弄电话,抑或就是在医疗电子摆弄血压计,终于熬不住了,钱太少了!
我的一个基友,告诉我,孩子,别哭,咱学PHP吧,可以站起来撸。。。
我眼里放光,就屁颠屁颠地跟来了。问我为啥不选择如日中天的王道Java,基友的话,比PHP难太多,咱专注的是互联网领域。来到了宇宙中心五道口,开始了PHP的实践之路,这是家做互联网教育的机构,我在这里学习工作的很开心,做了不少的项目,结交了不少的朋友,帝都的美丽画卷犹如一个美丽的女子一般在我眼前徐徐展开。我很开心。
后来来到现在的这家医疗互联网的公司,PHP使用的是自己的框架,有很深的Java的痕迹,用到了很多web的组件。学习了很多。像底层的ORM, 领域驱动模式,业务数据的拆分,异步MQ, 缓存Memcache, redis等等。
从2014年8月份到现在 2017年的2月份,正好2年半的时间里,我觉得是时候自己好好聊一聊PHP了。说的好的地方,希望您不吝掌声和赞美,说的不好的地方,你就拍砖,指出来,以供我改正,良辰在此谢过了。
02 web开发语言--PHP
PHP是一门专注于web开发的脚本语言,语法简单,非常容易上手,但是要做的很深很好就不容易了。就像大家都会写字,但是写出非常漂亮的文章,就不是一般人能做到了。PHP开发的领域也比较广阔,设计web开发的方方面面,技术黄金组合LAMP/LNMP,也指的是Linux操作系统, Apache/Nginx web服务器, mysql数据库,和PHP这个编程语言。
03 面向对象和数据结构--PHP
前几年PHP还是面向过程的编程,近来变成了面向对象了,一句话,还是简单,可定制,程序相当自由灵活,任何的变量,你都可以 var_dump打印出来看看到底是什么,比Java什么的好多了,Java打印不同的变量,都要不同的类的不同方法来实现,比较的繁琐。还有PHP的主要的数据结构主要是字符串和数组,这里边基本上包含了PHP %80的编程量,PHP的数组尤其强大,几乎实现了Java中的集合,哈希等多种结构,就是这么简单快捷,一气呵成。
04 MVC,框架和设计模式
PHP的开发,也是遵循MVC模式的,数据层Model,视图层View,控制层Controller。这种低耦合高内聚的设计方法也成了行业的圭臬。很多的PHP的优秀的框架像CI,ThinkPHP都是遵循MVC的,当然你自己高兴,也可以在PHP中实现你自己所谓的常见的设计模式,像单例模式,观察者模式等等。
05 LAMP/LNMP--开源免费的黄金组合
Linux系统确实挺牛的,那命令下的简洁高效,那黑底白字的优雅,那稳定强悍的性能,都使人深深着迷!PHP的服务端代码就运行在Linux这个免费高效的系统上面,很多运维人员也用shell或者Python等其他语言和Linux不断聊着人生。VIM更是Linux下的神之编辑器,每天都会有新的学习和成长,惊喜每一天啊。
Apache和Nginx都是PHP常用的web服务器,主要解决路由和请求转发的问题,还有负载均衡,反向代理等。做成集群,以构建高可用的web应用,这都是企业级的应用。这一部分也是我要精进的部分,有时间还得是拿来源码等好好研读一番,设计的精妙,尽在其中。
MySQL数据库,也是小巧而可爱,与PHP是天造地设的一对,增删改查,无一不能,支持事务的Innodb引擎,优化查询语句的路上,你我都需要费点思量。
PHP本身是这里边的核心,毕竟她是编程语言。这是世界上最好的编程语言,在Linux系统上运行,接受Apache或Nginx转发过来的请求,去Mysql数据库中拿处理展示的数据。这就是PHP的魅力,在前端和JavaScript一起渲染html的页面,华丽丽,牛逼逼,就是这么屌,哈哈~
06 高性能web应用--PHP的架构方向
保证网站性能的高性能,高可用的状态,等设计到架构的方面,从用户从浏览器中输入网址,到一个华丽的页面展示在用户的面前,虽然只有短短的几秒时间,中间却经历了太多太多的东西,现在咱们就解开这里的神秘面纱。
输入网址,浏览器客户端就发起了http的请求,到DNS解析网址对应的IP,到CDN数据中心,一路路由凯歌猛进,速度当然是光速了。在光纤或者电缆中信号电光石火。到网址的web服务器层面,被负载均衡路由到某个服务器集群下的服务器,有可能从缓存服务器直接拿数据走了,也可能请求到PHP的代码,继续到MySql数据库,业务处理完之后,输出给web服务器,沿原路返回,到客户端的浏览器,和JS一起进行渲染页面。完成全部的工作。是不是很神奇啊。
里面用到的技术很多呢,DNS,CDN,负载均衡,反向代理,缓存服务器集群,应用服务器集群,路由算法,数据库集群等待,都足以让你学习一番的了。
07 写在最后
技术的精进,永无止境,学些吧,你可以做的更好。
PHP这样的语言漂亮妹子,你值得拥有~
【闲聊PHP】编程界的萝莉小美女--PHP的更多相关文章
- C++ 是 编程界 的 背锅侠
C++ 是 编程界 的 背锅侠, C++ 背的包袱 之 庞大复杂, 举世瞩目, 令人感动 . C++ 标准 委员会 俨然 已成了一个 职业 . C++ 把 静态编译 体系 发展到 庞大复杂, C ...
- 浅析C#组件编程中的一些小细节
控件与组件的区别(Control&Component的区别) 作者:作者不详 发布日期:2011-06-30 12:08:41 控件与组件的区别(Control&Component的 ...
- Scratch编程:快乐的小马(三)
“ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 这是一款简单的小游戏,实现了一匹小马跑来跑去(小马有跑动 ...
- 结对编程——带UI的小初高数学学习软件
一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...
- Notepad++在编程使用时的小技巧
http://blog.csdn.net/freewaywalker/article/details/8010790 为了编程时更快捷和适应个人习惯,我们可以对Notepad++进行一系列的设置,这当 ...
- JSON带来编程界怎样的描述
JSON是一套数据对象组织格式,从程序员的角度观看,他是以种非常易读易写的形式来描述一种key-value的数据组织.全名称JavaScript Object Notation,从名称上可看已经说明他 ...
- 闲聊select和input常用的小插件
前言 在pc端的项目中,经常会用到表单标签,莫过于是select和input这两种,这两种相当常用.但往往原生的功能不尽人意,即使 input中type有n多属性,甚至连时间控件都有,但仍旧满足不了我 ...
- C语言地址对齐(转)--网络编程之结构体大小的计算
什么是地址对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数 ...
- 编程界失传秘术,SSO单点登录,什么是单点,如何实现登录?
单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术. 常出现在互联网应用和企业级平台中. 如:京东. 单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的. 三方登录:某系统,使 ...
随机推荐
- 反射技术在Android中的应用
本博客转自:http://blog.csdn.net/tiefeng0606/article/details/51700866 动态语言: 一般认为在程序运行时,允许改变程序结构或变量类型,这种语言称 ...
- c++读取REG_MULTI_SZ类型注册表
First: run RegQueryValueEx to get type and necessary memory size: Single byte code: DWORD type, size ...
- STM32驱动MPU6050
轴 MEMS轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor),可用 I2C 接口连接一个第三方的数字传感器,比如磁力计.扩展之后就可以 ...
- 【转】15款Java程序员必备的开发工具
如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能 ...
- iOS 消息推送原理及实现总结 分类: ios技术 2015-03-01 09:22 70人阅读 评论(0) 收藏
在实现消息推送之前先提及几个于推送相关概念,如下图: 1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服 ...
- C#中的逆变和协变
msdn 解释如下: “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型. “逆变”则是指能够使用派生程度更小的类型. 解释的很正确,大致就是这样,不过不够直白. 直白的理解: “协变” ...
- Bzoj1479: [Nerrc1997]Puncher打孔机
1479: [Nerrc1997]Puncher打孔机 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 22 Solved: 14[Submit][Sta ...
- Python3基础 使用clear() 清空一个字典
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- poi jar包介绍
来自官网: Component Application type Maven artifactId Notes POIFS OLE2 Filesystem poi Required to work w ...
- Linux平台使用指令记录
ssh gaea@10.101.89.156 svn checkout http://svn.alibaba-inc.com/repos/ali_china/olps/rights/branches/ ...