【闲聊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单点登录,什么是单点,如何实现登录?
单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术. 常出现在互联网应用和企业级平台中. 如:京东. 单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的. 三方登录:某系统,使 ...
随机推荐
- laravel5 html引用问题
1. Composer 安装 编辑 composer.json 文件, require 节点下增加: "illuminate/html": "~5.0" 然后 ...
- (简单) HDU 3397 Sequence operation,线段树+区间合并。
Problem Description lxhgww got a sequence contains n characters which are all '0's or '1's. We have ...
- displayport
去年买了一张ATI的显卡,但是很坑爹的是显卡后面没有VGA接口,除了一个HDMI,另外两个接口不认识,后来认识了DVI,用DVI连接显示器,剩下一个接口是什么一直没管,前两天电脑清灰,感兴趣了,去查了 ...
- X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- 【转】成为Linux内核高手的四个方法
我曾经问别人如何开始内核编程的学习,他们基本上都说:①如果你不需要了解内核是如何为你工作的,你为何要尝试呢?②你应该订阅Linux内核邮件列表,然后努力去理解.③如果你不去编写针对Linux内核的代码 ...
- onethink部署时后台登陆的问题
情况:本地开发后,上传到服务器时,无法登陆后台. 原因:用户的读取数据库的配置与应用的配置 分别在2个地方.而一般我们只记得修改一处配置. 解决:找到application/user/conf/con ...
- Struts2动态方法调用
动态方法就是一个Action对应多个请求,减少Action的数量 1.指定method属性 <action name="addAction" method="add ...
- Poi2006 Palindromes
2780: Poi2006 Palindromes Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 15 Solved: 5[Submit][Stat ...
- DevExpress控件学习总结2(转)
1.TextEditor(barEditItem)取文本string editValue = barEditItem1.EditValue.ToString(); //错误,返回null string ...
- 获取打开文件的PID
var SI : TStartupInfo; PI : TProcessInformation; pid:DWORD; begin ZeroMemory(@SI, SizeOf(SI)); //Zer ...