本文地址

01 前言--上了贼船

不知道何时就上了PHP的贼船了,开始了web的开发,记得差不多两年前我还是做传统电子行业的人,就是嵌入式的方向,那时在天津或摆弄手机,或下煤窑摆弄电话,抑或就是在医疗电子摆弄血压计,终于熬不住了,钱太少了!

我的一个基友,告诉我,孩子,别哭,咱学PHP吧,可以站起来撸。。。

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这个编程语言。

PHP·Web开发的利器

03 面向对象和数据结构--PHP

前几年PHP还是面向过程的编程,近来变成了面向对象了,一句话,还是简单,可定制,程序相当自由灵活,任何的变量,你都可以 var_dump打印出来看看到底是什么,比Java什么的好多了,Java打印不同的变量,都要不同的类的不同方法来实现,比较的繁琐。还有PHP的主要的数据结构主要是字符串和数组,这里边基本上包含了PHP %80的编程量,PHP的数组尤其强大,几乎实现了Java中的集合,哈希等多种结构,就是这么简单快捷,一气呵成。

PHP·面向对象编程~

04 MVC,框架和设计模式

PHP的开发,也是遵循MVC模式的,数据层Model,视图层View,控制层Controller。这种低耦合高内聚的设计方法也成了行业的圭臬。很多的PHP的优秀的框架像CI,ThinkPHP都是遵循MVC的,当然你自己高兴,也可以在PHP中实现你自己所谓的常见的设计模式,像单例模式,观察者模式等等。

05 LAMP/LNMP--开源免费的黄金组合

Linux系统确实挺牛的,那命令下的简洁高效,那黑底白字的优雅,那稳定强悍的性能,都使人深深着迷!PHP的服务端代码就运行在Linux这个免费高效的系统上面,很多运维人员也用shell或者Python等其他语言和Linux不断聊着人生。VIM更是Linux下的神之编辑器,每天都会有新的学习和成长,惊喜每一天啊。

PHP·LNMP黄金组合

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一起进行渲染页面。完成全部的工作。是不是很神奇啊。

PHP·构建高性能网站

里面用到的技术很多呢,DNS,CDN,负载均衡,反向代理,缓存服务器集群,应用服务器集群,路由算法,数据库集群等待,都足以让你学习一番的了。

07 写在最后

技术的精进,永无止境,学些吧,你可以做的更好。

PHP这样的语言漂亮妹子,你值得拥有~

PHP·你值得拥有的妹子

【闲聊PHP】编程界的萝莉小美女--PHP的更多相关文章

  1. C++ 是 编程界 的 背锅侠

    C++ 是 编程界 的 背锅侠, C++ 背的包袱 之 庞大复杂, 举世瞩目, 令人感动 . C++  标准 委员会 俨然 已成了一个 职业 . C++  把  静态编译 体系 发展到 庞大复杂, C ...

  2. 浅析C#组件编程中的一些小细节

    控件与组件的区别(Control&Component的区别) 作者:作者不详  发布日期:2011-06-30 12:08:41 控件与组件的区别(Control&Component的 ...

  3. Scratch编程:快乐的小马(三)

    “ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 这是一款简单的小游戏,实现了一匹小马跑来跑去(小马有跑动 ...

  4. 结对编程——带UI的小初高数学学习软件

    一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...

  5. Notepad++在编程使用时的小技巧

    http://blog.csdn.net/freewaywalker/article/details/8010790 为了编程时更快捷和适应个人习惯,我们可以对Notepad++进行一系列的设置,这当 ...

  6. JSON带来编程界怎样的描述

    JSON是一套数据对象组织格式,从程序员的角度观看,他是以种非常易读易写的形式来描述一种key-value的数据组织.全名称JavaScript Object Notation,从名称上可看已经说明他 ...

  7. 闲聊select和input常用的小插件

    前言 在pc端的项目中,经常会用到表单标签,莫过于是select和input这两种,这两种相当常用.但往往原生的功能不尽人意,即使 input中type有n多属性,甚至连时间控件都有,但仍旧满足不了我 ...

  8. C语言地址对齐(转)--网络编程之结构体大小的计算

    什么是地址对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数 ...

  9. 编程界失传秘术,SSO单点登录,什么是单点,如何实现登录?

    单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术. 常出现在互联网应用和企业级平台中. 如:京东. 单点登录一般是用于互相授信的系统,实现单一位置登录,全系统有效的. 三方登录:某系统,使 ...

随机推荐

  1. 170112、solr从服务器配置整合到项目实战

    整合网上资源后 100%可运行的配合步骤,部署在tomcat 为例. 一:下载solr,版本为5.2.1 地址:http://pan.baidu.com/s/1eRAdk3o 解压出来. 1.在解压的 ...

  2. onchange、oninput、onpropertyChange事件的异同

    onchange事件适用于input\textarea\select元素上,支持各大浏览器,该事件只有在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效: oninput事件适用于inpu ...

  3. webform中 ajax调用后台方法(非webservice)

    方法一:通过创建一个没有内容的窗体 后台: public partial class Ajax_ShoppingCart : System.Web.UI.Page { bookdbDataContex ...

  4. ios UIKit动力

    UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...

  5. 浅谈IOS8之size class

    文章目录 1. 简介 2. 实验 3. 实战 3.1. 修改 Constraints 3.2. 安装和卸载 Constraints 3.3. 安装和卸载 View 3.4. 其他 4. 后话 以前和安 ...

  6. 配置Linux Kernel时make menuconfig执行流程分析

       在编译内核前,一般是根据已有的配置文件(一般在内核根目录下的arch/arm/configs/文件夹下,把该目录下的xxx_defconfig文件拷贝到内核根目录下,并重命名为.config)来 ...

  7. JavaScript DOM节点操作总结

    节点类型 节点类型主要有三种:元素节点,属性节点和文本节点. 而对DOM的主要也就是围绕元素节点和属性节点的增删改查.下面就分别从对元素节点的操作和对属性节点的操作来介绍. 元素节点 查 在对DOM进 ...

  8. bitmap 加载的时候出现OOM,nullpointer

    1.OOM :对图片进行压缩,效果还不错:http://182.92.150.15:9876/static/server/topic_user/8068/201506/e5b37fec-0919-11 ...

  9. UVa 11747 - Heavy Cycle Edges

    题目大意:计算最小生成树有两种算法:一种是kruskal算法,另一种是与之相反的:如果图中存在环,去掉权重最大的边,直到不存在环.输出去掉的那些边. 可以用kruskal算法解决,在判断一条边时如果加 ...

  10. UVa 11129 - An antiarithmetic permutation

    题目大意:给一个正整数n,构造一个0...n-1的排列,使得这个排列的任何一个长度大于2的子序列都不为等差数列. 把序列按照奇偶位置分成两个序列,这样在两个序列间就不会形成等差数列了,然后再对这两个序 ...