php学习路线

文章目录
 
   

1. PHP 入门

PHP 入门没啥好说的,会基本编码,基本的开发结构(一般指MVC,呵呵哒),类与对象,就差很少了,能够说是入门了。php

1.1 OOP

写 PHP 最多目前无非就是 OOP,面向对象,说时迟那时快。不开玩笑地说,与我共事的某些前辈是连 OOP 都搞不清的,这里我就很少说了。html

其实不是说必定要会,要去理解 OOP,只是若是你理解这个玩意,对于你后面的工做已经学习会很是的有好处。laravel

其实面向对象也没有那么复杂,只要理解一点,单一职责,其实就是一个对象越简单越好。算法

也就是说,是本身该作就由本身作,不应由本身作的就不要本身作。编程

1.2 MVC

老梗了,所谓 MVC 不少人会说 Model, View, Controller, 其实这样说没错的,只是这样说不会让你更好地理解结构以及扩展性。segmentfault

MVC 我当前的理解是:调用(度),也很简单,其余框架也差很少这个原理,固然每一个框架的实现方式都不同。后端

基本流程:设计模式

+--------------+ +-----------+ +--------------+ +--------------+ | | ----+ request +----> | | ------------> | | | | +-----------+ | | | | | Request | | Route Match | | Handle | | | +-----------+ | | +----------+ | | | | <----+ Response +----- | | <-+ Response +-- | | +--------------+ +-----------+ +--------------+ +----------+ +--------------+

大体列了下最基础的框架底层原理,实际上我们开发中 90% 接触的只是在 Handle 处的工做,至于 Request、 Match、 Route 等基础的对象或者数据,框架早已经封装好了,也无需过分纠结和头疼这方面的事情,先要把业务功能处理好,而且容错处理好便可。浏览器

简单总结一句话:知其然而不知其因此然。缓存


2. PHP 进阶

进阶这个真是个头疼的问题,啥叫进阶,个人理解是,作一些以前没有作过的(指本领域:PHP),例如:设计模式,SPL,缓存设计(Cache),研究框架,开发规范,单元测试,行为驱动开发,组件(包括本身着手开发的),Composer 等等的东西,均可以理解为进阶。

框架推荐:

  1. Symfony

  2. Laravel

  3. Yaf

PHP 开发规范(PSR):

  1. PHP FIG

PHPUnit & TDD/BDD:

  1. PHPUnit

  2. PHP spec

设计模式:

  1. 设计模式

SPL:

  1. PHP SPL

Composer:

  1. Composer

欢迎补充

2.1 设计模式

设计模式,一个在软件设计中占有重要角色的课程,而咱们又不得不去了解。而对于设计模式来讲,不少人是抗拒的,由于他和普通的开发者有着不同的思惟方式,一个很明显的提高就是: 设计,而设计应该是根据发展的变化而变化,业务的变化而变化,模式也同样,不会是永恒不变的。惟一不变的是,基础,这些技巧与思惟少不了的是须要良好的基础。

因此说,基础是多么重要的,任何一切的一切都是创建与基础之上,这叫积累。如同盖楼。

在这些已有基础,咱们须要学习而且还须要学会各类推陈出新,这样才可让本身让他人走得更远。

设计模式学习推荐: 设计模式

2.2 资源节省

当今互联网,每秒钟都是钱,能节省的,绝对不能浪费,并且节省还能够必定地提升服务的质量。

通常咱们说的资源是:

  1. 内存

  2. 带宽

  3. 磁盘

  4. CPU

而这些之间实际上是有必定的关联的,和代码质量和容错机制也有必定关系。

上述每个都很重要,决定着你的服务质量。

能少占用内存就少占用内存,图片、媒体资源能压缩就压缩,减小无用的存储,下降代码的复杂度。

2.3 容错

比较常见的是: file_get_contentsconnection,有时候咱们会很天然地遗忘这里其实会有必定概率出现超时,最严重的就是形成服务无响应,以下代码:

file_get_contents('https://www.google.com/');

这代码分分钟被打,活生生将程序毁了。

若是发生超时,会占用大量 CPU,严重可能会致使服务无响应,危害极大。

容错是每一个开发者在开发过程当中必需要考虑的地方,没有代码没有 “八阿哥”,总会有意外的地方,作好容错能够最大程度地减小对用户的伤害以及能够有效提升在出错时的用户体验。百利而无一害。

2.4 日志

日志,一个很容易被无视而又很是很是重要的环节,能够说,这一环节比你作的任何一个地方的业务代码都要重要。

日志的好处:

  1. 记录,跟踪

  2. 调试

  3. 恢复

  4. 分析

  5. 调优

  6. 等等...

好处有好多,但在咱们开发者当中,其日志最重要的功能之一就是,记录问题,调试代码,优化架构。

不得不说日志的重要性,请你好好重视这一个容易被忽略的环节。

而日志的设计须要考虑性能,不能由于日志而影响服务质量哦。因此在日的环节在完整性和效率上要作好权衡。

2.5 缓存设计

缓存必须是针对业务状况而设计,不能生搬硬套。大公司的不必定适合你,开源方案也不必定不适合你,必定要找到本身合适的方案。

而在缓存设计方面,我我的推荐这一系列的文章: 缓存使用与设计

通俗简单地说,缓存的目的是为了提升服务的响应速度以及质量,不能由于缓存的添加而致使服务异常。

2.6 原理理解 (这里说到框架的研究,说得很差的地方,请多多批评和教导)

咱们平时开发接触不一样的开发工具,操做,甚至是监控,那么他们其中的原理,你又理解么?

其实咱们天天接触的东西都有它的实现原理,算法等等的东西,但咱们一直都在使用,并无很好地去理解他们当中的奥秘。时候有空去接触一下了。

首先,开发,编码我以为就是将现实生活搬到互联网中,我举个例子:

为何人访问量上来了,我们就要扩容,去扩展呢?原理很简单,看看我们超市里面的收银台就知道了。我们超市里面全部收银台不是天天每一个位置都有人的,根据人流(流量)动态扩容,并且有些收一台的一个位置上设置有两我的(多线程/多进程,看我的理解),这个设计挺妙的。当人一多,就会开多各个位置收银台,和增长人手。那他是怎么知道人多的呢?也很简单,就是经理(Manager/Master进程或者是运维,看理解),他知道,内部调度安排人手。

大体举了这么一个例子来讲明扩展的原理。

回到正题: 框架

相信你们都有接触过不少不一样的框架,CI, TP, Symfony, Yii, Laravel, Slim等等,最深入,最类似的地方在哪里呢?可能有些没有,可是,有一点能够确定的,就是,都是有一系列 Http 封装,Route 处理。由于这两是灵魂,剩下的是否是业务和结构。

剩下的就是考验框架代码质量的时候了,这里有一系列的框架,有的轻量,有的重量,有的灵活,有的高效。其实说到这里不少朋友都大概了解框架的运行原理。

我看过Symfony、Laravel、CI、Silex和ThinkPHP的代码,固然很粗略地看看。里面实现的大部分代码都是将各个处理模块 “粘合” 一块儿,也就是 "Bridge"。

大体流程图:

+----------+           +-------------+                      +------------+                          
   |          |           |             |                      |            |                          
   |  Client  |---------->| Application |--------------------->|   Start    |                          
   |          |           |             |                      |            |                          
   +----------+           +-------------+                      +------------+                          
         ^                                                            |                                
         |                                                            |                                
         |                                                            v                                
         |                         +-------------+             +-------------+                         
         |                         |             |             |             |                         
         |                         |  Container  |------------>|  Bootstrap  |-----+                   
         |                         |             |             |             |     |                   
         |                         +-------------+             +-------------+     |                   
         |                                ^                                        |     +------------+
         |                        +-------+--------+                               |     |            |
         |                        |                |                               +---->|  Request   |
         |                  +-----------+    +-----------+                               |            |
         |                  |           |    |           |                               +------------+
         |                  |   Route   |    |  Service  |                                      |      
         |                  |           |    |           |                                      |      
+----------------+ +-----------+ +-----------+ +-------------+ | | | | | | | Response | | Dispatcher | | | |<----------------------------------------------| |<---------------+ | | | | +----------------+ +-------------+ ^ | +--------------+ | | | v | +----------+ | | | +--------|Controller| | | +----------+ 

当你了解了这些流程以及所需的组建,用先用的组件的话都是能够很方便地组合出本身想要的框架。

其实我这里但愿更多的初学者多看看 ThinkPHP 的代码,而后也看看其余开源框架的代码,你会发现,除了 ThinkPHP 以外,你还能够发现更多新奇好玩的东西。

最终其实仍是离不开本身动手开发一个。

具体框架开发系列我会找个时间与你们分享。框架的理解可谓到一段落,下次我会分享我对其余服务器的理解。

来到这个阶段的,应该始终有一个意识:服务质量高于一切,就是不能由于添加服务而影响原有的服务

简单总结一下。大量动手实践本身的猜测,分析本身作过的项目而且优化本身以为不足的地方。

总结: 知其然而且知其因此然。

3. PHP 高手模式

我相信通过九九八十一难,能来到这个模式的人已经很少了。我本身仍是菜鸟,不敢在这里胡说,这里会记录我全部的 PHP 底层学习的通过,这里的故事,我想我等不到下一个故事了。

  1. Unix 环境高级编程

  2. tcp/ip 网络编程

  3. PHP 扩展开发

  4. 颈椎病康复指南

  5. 活着

3.1 Unix 环境高级编程

为何要理解并学习这一方面的知识?若果你是一名有追求的 PHP 开发者,最终仍是应该将精力落入到 “系统” 处,由于真正处理 PHP 程序的,正正是 “系统”,如何可让本身的 PHP 作得更好,如何可让本身的服务作的更好,如何可让后端支持更增强大,灵活,高效,你就应该关注到底层系统的实现当中,但平时也不要忘了 PHP 的开发规范。

此处的文章和笔记,我将会在之后的 Unix 学习一系列当中给你们呈现。

3.2 tcp/ip 网络编程

在平常生活中,Http 已经离不开你们了,从平时打开应用,打开浏览器,搜索,都是须要使用 Http,应该没有比这个接触更多了吧。可是里面的奥秘你又知道多少?不要紧,和我一块儿探索 TCP/IP 的奥秘吧。

文章和笔记,之后会在 TCP/IP 章节中给你们呈现.

3.3 PHP 扩展开发

学习扩展开发和学习 PHP 是同样同样的,根据 PHP 手册上的流程...

  1. 语言参考

  2. 基本语法

  3. 类型

  4. 变量

  5. 常量

  6. 表达式

  7. 运算符

  8. 流程控制

  9. 函数

  10. 类与对象

  11. 命名空间

  12. Errors

  13. 异常处理

  14. 生成器

  15. 引用的解释

  16. 预约义变量

  17. 预约义异常

  18. 预约义接口

  19. 上下文(Context)选项和参数

  20. 支持的协议和封装协议

看到这里应该要懂得触类旁通的了,后面的看大家的造化了......

此处的文章和笔记,我将会在之后的 PHP 扩展开发 学习一系列当中给你们呈现。

预告

这些系列文章可能不会太快给你们呈现,由于除了工做还有生活,我但愿你们能够共同进步,一块儿去分享相关的经验和知识。感恩你们。

相关文章
相关标签/搜索