phper进阶路线

为了本身对php的系统全面深刻的掌握,我经过我的经验,以及搜索网上高手经验,汇总了一份php自我学习路线规划,包括实战演练、学习建议、高手进阶、常见问题和测试总结五块。算是一个系统的学习计划和目标吧。
避免盲目学习,对提升有所指引。但愿自我加压,经过努力修炼达到高手水平。天道酬勤,自我勉励!此路线仅适合我本人。javascript

部分摘自博客,参看:【原创】PHP程序员的技术成长规划 http://blog.csdn.net/heiyeshuwu/article/details/40098043
这个php成长规划清晰明确,很是专业。
-------------------------------------------------------------
1、实战演练
熟悉语法&api -> 阅读zend、ci、wordpress源码 -> 用PHP独立开发项目 -> 深刻了解PHP引擎实现细节、扩展编写、性能优化等php

(1周)HTML+CSS HTML5+CSS3
(2-3天)留言板或记事本,(增删改查,数组函数数据库函数)
(7天)bbs或企业网站,(模板、分页、权限)phpchina的高手PHP高手带路--问题汇总解答以及PHP手册
(1个月)学习discuz学习外国的开源程序(zencert Joomla drupal).学习phpchina上的精华知识。
(1个月)深刻学习zf框架(增删改查,权限控制,前端模板页面等)
(长期总结)对本身作过的小项目进行总结,用面向对象思想,对结构优化。
看开源的框架源码(这步请注意找一些比较小巧的开源框架如 CI,Slim ),加强对 MVC 的理解
更加深刻的系统的学习(MySQL Linux C 语言 javascript html css redis 等)css

最紧要实战:
(2周)3个站(至少20个美工页面)psd to html 切制练习。
(1周)jquery实战演习
(1月)用zf框架,开发模块,达到灵活掌握html

必须掌握的知识点:
数据库必须熟练掌握 mysql & sqlserver,同时必须熟练zendstdio的操做。
熟练进行phpmyadmin的操做。
adodb(数据库接口)+javascript+xml+ajax(异步JavaScript和XML)+jquery(JS框架),
熟悉OOP编程,学习thinkphp,zf框架,学习smarty模板引擎,pear (PHP扩展与应用库),prototype(设计模式)。
对apache也应该买本管理员手册好好看看。
同时大体了解一下linux等等。以及服务器管理等操做。
-------------------------------------------------------------
2、学习建议前端

"函数参考"那部分没必要全看,可是 日期与时间、文件系统、其它基本扩展、Session、变量与类型 这几部分建议必定要翻一下,里面介绍了不少经常使用的函数和类。
这些函数没必要都记住,只要有个印象就行,之后用到时再回来翻,用的多了天然就记住了。
先从留言本作起,再作个我的博客,而后再作个复杂点儿的CMS,或者小OA,所谓经验,其实就是解决问题的方法,从项目中不断思考,就能不断收获!
想學好PHP OOP, 直接上Zend Framework 2,半年後你會覺得本身進步許多
总结:自学很是重要,实际项目经验也很重要。不要觉得计算机基础不重要,学习计算机基础对学习编程语言很是有用。只要对本身狠一点,多下功夫,没有攻不破的东西。java

1基础PHP程序员
重点:把LNMP搞熟练(核心是安装配置基本操做)
目标:可以完成基本的LNMP系统安装,简单配置维护;可以作基本的简单系统的PHP开发;可以在PHP中型系统中支持某个PHP功能模块的开发。
基本语法数组、字符串、数据库、XML、Socket、GD/ImageMgk图片处理等等;熟悉各类跟MySQL操做连接的api(mysql/mysqli/PDO),知道各类编码问题的解决;知道常规熟练使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf等);了解基本MVC的运行机制和为何这么作,稍微知道不一样的PHP框架之间的区别;可以快速学习一个MVC框架。可以知道开发工程中的文件目录组织,有基本的良好的代码结构和风格,可以完成小系统的开发和中型系统中某个模块的开发工做。node

2中级PHP程序员
重点:提升针对LNMP的技能,可以更全面的对LNMP有熟练的应用。
目标:可以随时随地搭建好LNMP环境,快速完成常规配置;可以追查解决大部分遇到的开发和线上环境的问题;可以独立承担中型系统的构架和开发工做;可以在大型系统中承担某个中型模块的开发工做;
除了第一阶段的能力,安装配置方面可以随意安装PHP和各类第三方扩展的编译安装配置;了解php-fpm的大部分配置选项和含义(如max_requests/max_children/request_terminate_timeout之类的影响性能的配置),知道mod_php/fastcgi的区别;在PHP方面已经可以熟练各类基础技术,还包括各类深刻些的PHP,包括对PHP面向对象的深刻理解/SPL/语法层面的特殊特性好比反射之类的;在框架方面已经阅读过最少一个以上常规PHP MVC框架的代码了,知道基本PHP框架内部实现机制和设计思想;在PHP开发中已经可以熟练使用常规的设计模式来应用开发(抽象工厂/单例/观察者/命令链/策略/适配器 等模式);建议开发本身的PHP MVC框架来充分让开发自由化,让本身深刻理解MVC模式,也让本身可以在业务项目开发里快速升级;熟悉PHP的各类代码优化方法,熟悉大部分PHP安全方面问题的解决处理;熟悉基本的PHP执行的机制原理(Zend引擎/扩展基本工做机制);mysql

3高级PHP程序员
重点:除了基本的LNMP程序,还可以在某个方向或领域有深刻学习。(纵深维度发展)
目标:除了可以完成基本的PHP业务开发,还可以解决大部分深刻复杂的技术问题,而且能够独立设计完成中大型的系统设计和开发工做;本身可以独立hold深刻某个技术方向,在这块比较专业。(好比在MySQL、Nginx、PHP、Redis等等任一方向深刻研究)
做为基础核心技能,咱们在第二阶段的基础上面,须要有更深刻的学习和应用。从基本代码应用上面来讲,可以解决在PHP开发中遇到95%的问题,了解大部分PHP的技巧;对大部分的PHP框架可以迅速在一天内上手使用,而且了解各个主流PHP框架的优缺点,可以迅速方便项目开发中作技术选型;在配置方面,除了常规第二阶段会的知识,会了解一些比较偏门的配置选项(php auto_prepend_file/auto_append_file),包括扩展中的一些复杂高级配置和原理(好比memcached扩展配置中的memcache.hash_strategy、apc扩展配置中的apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection之类的);对php的工做机制比较了解,包括php-fpm工做机制(好比php-fpm在不一样配置机器下面开启进程数量计算以及原理),对zend引擎有基本熟悉(vm/gc/stream处理),阅读过基本的PHP内核源码(或者阅读过相关文章),对PHP内部机制的大部分核心数据结构(基础类型/Array/Object)实现有了解,对于核心基础结构(zval/hashtable/gc)有深刻学习了解;可以进行基本的PHP扩展开发,了解一些扩展开发的中高级知识(minit/rinit等),熟悉php跟apache/nginx不一样的通讯交互方式细节(mod_php/fastcgi);除了开发PHP扩展,能够考虑学习开发Zend扩展,从更底层去了解PHP。jquery


3、高手进阶linux

英文好的话推荐看 https://tutsplus.com/ (免费版本http://code.tutsplus.com/),虽然要付费(年付15美金/月),可是你获得的将更多。
我已经持续付费两年了,最先学php,而后跟进CI、Laravel等框架,后来学jquery、angularjs等,都在项目中实际应用了,ror、nodejs也跟着学了学,可是没有机会使用。
老外高手作的教学不但教程安排合理,节奏比较快,不浪费你的时间并且让你可以保持高度注意力集中,而且能够看看高手的编程习惯和工具,学习到的都是业界最新的东西,如各类编辑器的workflow,秒杀国phper的视频。

研究php内核
php技术架构
最好能参与php开源项目
-------------------------------------------------------------
4、常见问题

技术线(偏深度):

  1. 基础知识,好比数据结构,多线程,I/O,Http协议等
  2. 语言深度,好比PHP的运行机制,性能优化,APC(以及其原理等)
  3. 源码阅读,好比看过哪些框架,其中的机制是怎么样的,往细了问
  4. 知识宽度,静态语言,好比C、Java等,我始终以为只会一门语言不是什么好事情

php常见问题列表:
1.看看简历,会问一些过去作的项目的用户量、pv、吞吐量、相关难点和解决方法等
2.数据库设计经验,为何进行分表? 分库?
通常多少数据量开始分表? 分库? 分库分表的目的? 什么是数据库垂直拆分? 水平拆分? 分区等等?能够举例说明
3.数据库优化有哪些? 分别须要注意什么?
4.web开发方面会遇到哪些缓存? 分别如何优化?
5.给你256M的内存,对10G的文件进行排序(文件每行1个数字),如何实现?
对10G的文件进行查找如何实现?
统计10G文件每一个关键字出现的次数如何实现?
6.假如你如今是12306火车订票的设计师,你该如何设计知足全国人民订票?
7.假若有1亿用户的访问量,你的服务器架构是怎样的? 用户信息的存储方案如何设计?
8.若是你是技术组长,所带团队任务进度没法完成你该如何解决?
若是在进度排满的前提下插入任务,你该如何保证总进度不延期?
若是有的工程师今天预约任务没有完成,你该如何解决?
9.从你的经验方面谈一下如何构建高性能web站点? 须要哪些环节? 步骤? 每一个步骤须要注意什么如何优化等?

  1. 为何要对数据库进行主从分离?
  2. 如何处理多服务器共享session?
  3. 一个10G的表,你用php程序统计某个字段出现的次数,思路是?
  4. 会告诉你一个nginx日志例子,用你认为最佳的编程语言统计一下http响应时间超过1秒的前10个url?
  5. 给你一个mysql配置文件,用你认为最佳的编程语言解析该文件?
  6. 给你两个路径a和b,写一个算法或思路计算a和b差距几层并显示a和b的交集?
  7. 给你一个url,在nginx配置一下rewrite指定到某个具体路径?
  8. 一个php文件的解释过程是? 通常加速php有哪些? 提升php总体性能会用到哪些技术?
  9. session和cookie生存周期区别? 存储位置区别?
  10. require、include、require_once、include_once区别? 加载区别? 若是程序按需加载某个php文件你如何实现?
  11. chrome号称为多线程的,因此多线程和多进程的区别为?
  12. php在2011年末出现hash碰撞,hash碰撞原理为? 如何进行修复?
  13. web不安全因素有哪些? 分别如何防范?
  14. 假如两个单链表相交,写一个最优算法计算交点位置,说思路也能够?
  15. 假如你是技术组长? 如何提升团队效率?
  16. nginx负载均衡有哪些? 若是其中一台服务器挂掉,报警机制如何实现?
  17. 不优化前提下,apache通常最大链接数为? nginx通常最大链接数为? mysql 每秒insert ? select ? update ? delete?
  18. mysql 数据类型有哪些 ? 分别占用多少存储空间 ?
  19. nginx设置缓存js、css、图片等信息,缓存的实现原理是?
  20. 如何提升缓存命中率? 如何对缓存进行颗粒化?
  21. php的内存回收机制是?
  22. 个人全部问题都问完了,你有什么问题问我没有?

5、调试总结
我目前经常使用的调试方法:
echo 和echo "

"; print_r(method); 脚本js就是alert方式。 css调试就是弄成色块加上边框等
日志方式用于没法打印时。logToFile("my.log", "out page:".$_POST ['cpage']);
function logToFile($filename,$msg){
$fd=fopen($filename, "a");
$str="[".date("Y/m/d h:i:s",mktime())."]".$msg;
fwrite($fd, $str."\n");
fclose($fd);
}
有个调试技术的博客总结的挺全面。参看下面。
博客地址:http://blog.csdn.net/heiyeshuwu/article/details/5684307
在线查看:http://down.51cto.com/data/155822 PHP调试技术手册发布(1.0.0 pdf)目录 1 内置API输出调试 1.1 基本调试API 1.1.1 echo (print): 1.1.2 printf 1.1.3 print_r、var_dump(var_export)、debug_zval_dump 1.2 错误控制和日志记录调试 1.2.1 错误选项控制 1.2.2 错误抛出和处理 1.2.3 使用错误抑制符 1.2.4 日志记录 2 浏览器调试 2.1 页面输出调试 2.2 FirePHP 调试 2.2.1 普通变量监测 2.2.2 调用栈监测 2.2.3 监测抛出异常 2.2.4 组显示信息 3 IDE 调试 3.1 基本经常使用IDE介绍 3.1.1 Vim 3.1.2 Zend Studio 3.1.3 Eclipse 3.1.4 NetBeans 3.2 IDE调试 3.2.1 Zend Studio + Zend Debugger 3.2.2 Eclipse (PDT) + Xdebug 3.2.3 Vim + Xdebug + DBGp 4 PHP 性能调试技术 4.1 基本时间占用监测 4.2 使用 Xdebug 进行性能分析 4.2.1 安装配置: 4.3 APD(Advanced PHP Debugger) 4.3.1 安装配置 4.3.2 使用APD 4.4 使用Xhprof 进行性能分析 4.4.1 Xhprof 的优势: 5 PHP单元测试技术 5.1 PHPUnit
相关文章
相关标签/搜索