php学习计划



原则: 资深的工程师往往都会有意识的培养自己的技能树的,围绕少数核心技能/兴趣来有方向有计划的学习和参与项目。  原则:只看国外的,只用Google,只用英文. 一般用图灵的技术书籍。

英文文档:   多看php手册,学好英文,有什么问题首先看官方英文手册。   做好的程序员,远离百度,使用Google,学会用英语搜索 .
继续英语学习计划,开始尝试英文写作和记录。代码批注等。 尽量开英文原文章,原书等。 算法这些较难的就可以以中文为主。英语一定要学好,起码读写要不借助工具能看懂英文专业文章,php是用来做web的,发展极快,各种新技术层出不穷,等中文文档出来黄花菜都凉了,而且中文文档是经过了一道手的,比起原文还是有差距。

linux系统:: 尽快将开发环境调整到linux,打造个人优秀的Vim环境。比如find、awk用法文件排序方法(比如取某文件夹最后修改的文件并将大小显示为以M为单位的)python、shell等脚本程度

参与项目:参与开源项目,做自己的开源项目。不要一个人漫无目的地走,多与人交流才是最主要的。
交流方式有很多,各框架学习社区、观摩成熟的项目都是不错的选择,或者直接 参与开源项目的开发讨论也是很好的办法。


敏捷开发: 测试驱动开发, 学习使用PHPUnit、SimpleTest这些工具写单元测试,(尽快切换到linux环境下) 看php相关书籍,配置好liunux环境。

设计模式: 多实践,配合着看书。 裸写php。思想是在实践中积累的,而不是看了书学了别人的思想就会了。不懂得相关知识点就自己啃啃l
实践中深入OOP:面向对象的了解程度(静态方法、变量可用范围、抽象类、接口、继承、克隆、魔术方法等)

编程思想:编程思想方面,看看 代码大全、数据结构与算法,最好能结合知名开源项目的代码和文档阅读来体会,比如WordPress和Zend Framework都是值得好好读好好思考的项目;  钻研篇:《代码大全》《重构 改善既有代码的设计》《程序员修炼之道 从小工到专家》《日月神话》,其他:数据结构与算法、设计模式、安全、最佳实践。

深入理解架构: 框架各部分了解程度(路由、设计规则、数据层包装、视图层、可扩展等)

杂项:
1多查少问,自己想方设法得到的答案更深刻,学生时代不是有句话:抄来的答案最不容易忘吗?
2从大到小,由面到点,不要老啃着细枝末节的东西不放, 知识要放在整个项目和环境中去学。例如,学习框架的运行模式而不是只是学具体某一个框架,任何框架随手就用。多使用国外开源东西。
3 Laruence , PHP官方开发组成员  入门教程现在很多了已经,呵呵, 最重要的就是动手练习, 遇到不会的用法, PHP源码下的ext/目录里, 有各种各样的例子.
4辅助语言: c++和java起码要熟悉一个,两个都熟悉更好,没见哪个技术大牛绕过这两个了。
5 动手。 多写,多看,多研究。各种开源程序,开源框架,只要你肯用,就肯定能学到东西。
最后,开始看一些权威/高级应用的书,偏理论,底层的,到这时候,估计你才能真正理解之前你所学过的那些东西。

辅助的开发效率:开发效率方面,了解一些开源的library,先各领域选择少数的一两个用好用熟练再说,比如Javascript用jQuery、上传用SWFUpload等;相关技能根据自己的实际需要,了解比较重要的一些点,比如MySQL、Memcache等,先强化了解基本使用、常见问题、主要优化手段等就好,慢慢跟着主技能一起提升吧;      整理一些抽象的模型库,比如一些框架的libary,多看多整理。

框架:不要一开始就上手框架,否则容易被框架所圈住。先从最基本的PHP开始写,然后慢慢封装一些自己的类。在这个过程中,慢慢的你就能整理出一套自己的开发类出来,这些类可以说是一个框架,一个专属你自己的框架。
此时再看看一些流行的框架,比如Yii、CakePHP等等。理解框架的思想,学着去灵活使用框架,而不是仅仅限制于框架提供给你的API。
记得当时使用ThinkPHP的时候,太多的人没有学好PHP,甚至都不知道PEAR是什么的情况下,直接上手。虽然利用TP提供的功能,能做出很多东西,但是遇到一些文档中没有说道,或者需要灵活使用的时候,根本不会。这个可以说是使用框架的悲哀。
裸写PHP-- > 使用类-- > 理解MVC(或者理解设计模式)-- > 框架-- > 灵活使用-- > 可以随心所欲使用设置修改框架。


数据库:
事务处理
各类锁处理
分库、主从与离线
左连接、右连接、交叉连接
SQL优化
不常用SQL函数应用
曾经遇到的坑

安全:
分别讲讲XSS、CSRF原理和防范
SQL注入防范
上传应该注意哪些问题
变量覆盖问题
危险函数该如何处理
服务基线
安全域

php扩展开发:深入点的话,学习PHP扩展的开发,也许你可能不会开发扩展,但如果你了解了如果开发一个扩展,你就会知道PHP并不是想很多说的那么简单

发展平台:
资深的工程师往往都会有意识的培养自己的技能树的,围绕少数核心技能/兴趣来有方向有计划的学习和参与项目。
当然,最重要的是选择一个好的平台,大公司流程和技术积累会比较雄厚适合学东西,小公司担任主力开发更能发挥些,这些是不同阶段上不同诉求来决定的,一般建议在足以胜任经理以上级别前,还是选择制度健全有一定行业知名度的公司更好一些,因为这个选择同时也决定了你的主要交际圈;
学历将决定你的起点,尤其是脚本语言,脚本语言你要是进不了一个好的平台,你想提高,几乎不可能,1E数据跟1W数据完全两回事,1E的PV跟1W的PV完全不一样,神马队列,缓存,分布式,小公司基本都是极其表面的使用,甚至在不少小公司,你50%以上的时间在整div和CSS,所以起码一个本科学历,没有就去弄一个。

练级之道,就是进一家靠谱的 公司,
进不了靠谱的公司,很难学到技术,最多也是纸上谈兵,
以为知道世面上已经公开的facebook架构,就以为自己技术很高了。

结束如何写一个php类。
布尔商城实例开发。
php100相关资源 有用的章节看看源码:
php书籍再次过一遍。
相关博客文章:
PHP之道: PHP: The Right Way

学习PHP面向对象的部分以及一些核心的东西,PHP核心技术与最佳实践 (豆瓣)深入PHP:面向对象、模式与实践(第2版) (豆瓣)PHP高级程序设计 (豆瓣)高性能PHP应用开发 (豆瓣)这几本书应该要看一下。 

《PHP高级程序设计_模式、框架与测试》 Kevin McArthur  买一份英文版 《Pro PHP Patterns,Frameworks,Testing and More》或者先去图书馆把这些书看了再一起买?


效率工具:
编辑器:以vim为主其他可以用用看。

IDE类:PHPstorm。 IDE:NetBeans, PhpStorm  Zend studio, netbeans,editplus, 或者直接VIM,都可以使用的 eclipse + vim 插件  在windows环境下开发,IDE用NetBeans,本地开发比起Zend Studio方便不少,文本编辑器用Notepad++这个神器因其各种强悍功能秒杀zend和普通eclipse。
调试类:xdebug+wincacheegrind,这个配合查看系统运行过程,分析程序给力。
框架:CI写的很优雅,yaf的效率无敌。
xshell 连接服务器
调试: xdebug+wincacheegrind调试用 调试时,xdebug + phpunit + XHProf  遇到了野生的bug,就是你了,去吧,Xdebug,使用调试程序,效果拔群。Xdebug升级了!  先看下 目录结构
使用xdebug生成profile文件,可以用KCachegrind来查看,但是这个工具只在linux下面可用,没有windows下的版本。这里推荐一个win下的免费工具—— wincachegrind,也可以查看xdebug的profile文件,用来分析php代码运行情况足够用了(偶尔不太稳定)。

测试:phpunit 测试用
mysql: navicat mysql工具
性能调优:xhprof



拿到一个 PHP 网站的代码,如何快速分析项目结构与各函数关系:
同意 @刘昕明 的说法,一个源码首先第一步不看代码,看结构,大致知道采用的是那种设计模式,例如函数式的还是mvc方式的,接下来从一个功能入手,先用firebug或者chrome的工具查看请求的url,以及请求url后web前端表现出来的,接下来,上面的模式用到了,去看url对于的方法吧,方法中必定会调用其他的方法,层层递进,分析下来,这个小功能的实现懂了吧,然后多多分析各个功能的实现,大致这个源码的结构熟悉了,那么带着前端的一些操作去摸索各个功能点的实现方法吧

先看下 目录结构
使用xdebug生成profile文件,可以用KCachegrind来查看,但是这个工具只在linux下面可用,没有windows下的版本。这里推荐一个win下的免费工具—— wincachegrind,也可以查看xdebug的profile文件,用来分析php代码运行情况足够用了(偶尔不太稳定)。


内核与扩展:

php内核:
基本上都是Zend Api那套编程接口,熟悉一下,就可以很容易编写php extension。前提是要了解一下php脚本执行时,php内核的内部的运行机理. 可以参考下面的几个文档 
http://www.php.net/manual/en/internals2.php 
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/ 

http://devzone.zend.com/317/extension-writing-part-ii-parameters-arrays-and-zvals/ 

http://devzone.zend.com/446/extension-writing-part-iii-resources/

php扩展:
http://www.laruence.com/2011/09/13/2139.html
这个牛人的博客可以看一下,另外这篇文章里介绍的那几本书也挺不错的。
网上的扩展开发教程很多, 比如:  http://www.laruence.com/2009/04/28/719.html 源码中的ext目录下, 也附带了很多经典的例子. 
要注意的就是, 
1. 使用PHP的扩展构建系统来制作/发布扩展, 不要自己写Makefile,或者build.sh 
2. 尽量优先使用Zend API或者PHP API, 从而在很大程度上保证平台无关性.
3. 尽量只使用c89.
4. 多练习...
2.PHP扩展开发及内核应用
https://github.com/walu/phpbook 

原则: 资深的工程师往往都会有意识的培养自己的技能树的,围绕少数核心技能/兴趣来有方向有计划的学习和参与项目。  原则:只看国外的,只用Google,只用英文. 一般用图灵的技术书籍。

英文文档:   多看php手册,学好英文,有什么问题首先看官方英文手册。   做好的程序员,远离百度,使用Google,学会用英语搜索 .
继续英语学习计划,开始尝试英文写作和记录。代码批注等。 尽量开英文原文章,原书等。 算法这些较难的就可以以中文为主。英语一定要学好,起码读写要不借助工具能看懂英文专业文章,php是用来做web的,发展极快,各种新技术层出不穷,等中文文档出来黄花菜都凉了,而且中文文档是经过了一道手的,比起原文还是有差距。

linux系统:: 尽快将开发环境调整到linux,打造个人优秀的Vim环境。比如find、awk用法文件排序方法(比如取某文件夹最后修改的文件并将大小显示为以M为单位的)python、shell等脚本程度

参与项目:参与开源项目,做自己的开源项目。不要一个人漫无目的地走,多与人交流才是最主要的。
交流方式有很多,各框架学习社区、观摩成熟的项目都是不错的选择,或者直接 参与开源项目的开发讨论也是很好的办法。


敏捷开发: 测试驱动开发, 学习使用PHPUnit、SimpleTest这些工具写单元测试,(尽快切换到linux环境下) 看php相关书籍,配置好liunux环境。

设计模式: 多实践,配合着看书。 裸写php。思想是在实践中积累的,而不是看了书学了别人的思想就会了。不懂得相关知识点就自己啃啃l
实践中深入OOP:面向对象的了解程度(静态方法、变量可用范围、抽象类、接口、继承、克隆、魔术方法等)

编程思想:编程思想方面,看看 代码大全、数据结构与算法,最好能结合知名开源项目的代码和文档阅读来体会,比如WordPress和Zend Framework都是值得好好读好好思考的项目;  钻研篇:《代码大全》《重构 改善既有代码的设计》《程序员修炼之道 从小工到专家》《日月神话》,其他:数据结构与算法、设计模式、安全、最佳实践。

深入理解架构: 框架各部分了解程度(路由、设计规则、数据层包装、视图层、可扩展等)

杂项:
1多查少问,自己想方设法得到的答案更深刻,学生时代不是有句话:抄来的答案最不容易忘吗?
2从大到小,由面到点,不要老啃着细枝末节的东西不放, 知识要放在整个项目和环境中去学。例如,学习框架的运行模式而不是只是学具体某一个框架,任何框架随手就用。多使用国外开源东西。
3 Laruence , PHP官方开发组成员  入门教程现在很多了已经,呵呵, 最重要的就是动手练习, 遇到不会的用法, PHP源码下的ext/目录里, 有各种各样的例子.
4辅助语言: c++和java起码要熟悉一个,两个都熟悉更好,没见哪个技术大牛绕过这两个了。
5 动手。 多写,多看,多研究。各种开源程序,开源框架,只要你肯用,就肯定能学到东西。
最后,开始看一些权威/高级应用的书,偏理论,底层的,到这时候,估计你才能真正理解之前你所学过的那些东西。

辅助的开发效率:开发效率方面,了解一些开源的library,先各领域选择少数的一两个用好用熟练再说,比如Javascript用jQuery、上传用SWFUpload等;相关技能根据自己的实际需要,了解比较重要的一些点,比如MySQL、Memcache等,先强化了解基本使用、常见问题、主要优化手段等就好,慢慢跟着主技能一起提升吧;      整理一些抽象的模型库,比如一些框架的libary,多看多整理。

框架:不要一开始就上手框架,否则容易被框架所圈住。先从最基本的PHP开始写,然后慢慢封装一些自己的类。在这个过程中,慢慢的你就能整理出一套自己的开发类出来,这些类可以说是一个框架,一个专属你自己的框架。
此时再看看一些流行的框架,比如Yii、CakePHP等等。理解框架的思想,学着去灵活使用框架,而不是仅仅限制于框架提供给你的API。
记得当时使用ThinkPHP的时候,太多的人没有学好PHP,甚至都不知道PEAR是什么的情况下,直接上手。虽然利用TP提供的功能,能做出很多东西,但是遇到一些文档中没有说道,或者需要灵活使用的时候,根本不会。这个可以说是使用框架的悲哀。
裸写PHP-- > 使用类-- > 理解MVC(或者理解设计模式)-- > 框架-- > 灵活使用-- > 可以随心所欲使用设置修改框架。


数据库:
事务处理
各类锁处理
分库、主从与离线
左连接、右连接、交叉连接
SQL优化
不常用SQL函数应用
曾经遇到的坑

安全:
分别讲讲XSS、CSRF原理和防范
SQL注入防范
上传应该注意哪些问题
变量覆盖问题
危险函数该如何处理
服务基线
安全域

php扩展开发:深入点的话,学习PHP扩展的开发,也许你可能不会开发扩展,但如果你了解了如果开发一个扩展,你就会知道PHP并不是想很多说的那么简单

发展平台:
资深的工程师往往都会有意识的培养自己的技能树的,围绕少数核心技能/兴趣来有方向有计划的学习和参与项目。
当然,最重要的是选择一个好的平台,大公司流程和技术积累会比较雄厚适合学东西,小公司担任主力开发更能发挥些,这些是不同阶段上不同诉求来决定的,一般建议在足以胜任经理以上级别前,还是选择制度健全有一定行业知名度的公司更好一些,因为这个选择同时也决定了你的主要交际圈;
学历将决定你的起点,尤其是脚本语言,脚本语言你要是进不了一个好的平台,你想提高,几乎不可能,1E数据跟1W数据完全两回事,1E的PV跟1W的PV完全不一样,神马队列,缓存,分布式,小公司基本都是极其表面的使用,甚至在不少小公司,你50%以上的时间在整div和CSS,所以起码一个本科学历,没有就去弄一个。

练级之道,就是进一家靠谱的 公司,
进不了靠谱的公司,很难学到技术,最多也是纸上谈兵,
以为知道世面上已经公开的facebook架构,就以为自己技术很高了。

结束如何写一个php类。
布尔商城实例开发。
php100相关资源 有用的章节看看源码:
php书籍再次过一遍。
相关博客文章:
PHP之道: PHP: The Right Way

学习PHP面向对象的部分以及一些核心的东西,PHP核心技术与最佳实践 (豆瓣)深入PHP:面向对象、模式与实践(第2版) (豆瓣)PHP高级程序设计 (豆瓣)高性能PHP应用开发 (豆瓣)这几本书应该要看一下。 

《PHP高级程序设计_模式、框架与测试》 Kevin McArthur  买一份英文版 《Pro PHP Patterns,Frameworks,Testing and More》或者先去图书馆把这些书看了再一起买?


效率工具:
编辑器:以vim为主其他可以用用看。

IDE类:PHPstorm。 IDE:NetBeans, PhpStorm  Zend studio, netbeans,editplus, 或者直接VIM,都可以使用的 eclipse + vim 插件  在windows环境下开发,IDE用NetBeans,本地开发比起Zend Studio方便不少,文本编辑器用Notepad++这个神器因其各种强悍功能秒杀zend和普通eclipse。
调试类:xdebug+wincacheegrind,这个配合查看系统运行过程,分析程序给力。
框架:CI写的很优雅,yaf的效率无敌。
xshell 连接服务器
调试: xdebug+wincacheegrind调试用 调试时,xdebug + phpunit + XHProf  遇到了野生的bug,就是你了,去吧,Xdebug,使用调试程序,效果拔群。Xdebug升级了!  先看下 目录结构
使用xdebug生成profile文件,可以用KCachegrind来查看,但是这个工具只在linux下面可用,没有windows下的版本。这里推荐一个win下的免费工具—— wincachegrind,也可以查看xdebug的profile文件,用来分析php代码运行情况足够用了(偶尔不太稳定)。

测试:phpunit 测试用
mysql: navicat mysql工具
性能调优:xhprof



拿到一个 PHP 网站的代码,如何快速分析项目结构与各函数关系:
同意 @刘昕明 的说法,一个源码首先第一步不看代码,看结构,大致知道采用的是那种设计模式,例如函数式的还是mvc方式的,接下来从一个功能入手,先用firebug或者chrome的工具查看请求的url,以及请求url后web前端表现出来的,接下来,上面的模式用到了,去看url对于的方法吧,方法中必定会调用其他的方法,层层递进,分析下来,这个小功能的实现懂了吧,然后多多分析各个功能的实现,大致这个源码的结构熟悉了,那么带着前端的一些操作去摸索各个功能点的实现方法吧

先看下 目录结构
使用xdebug生成profile文件,可以用KCachegrind来查看,但是这个工具只在linux下面可用,没有windows下的版本。这里推荐一个win下的免费工具—— wincachegrind,也可以查看xdebug的profile文件,用来分析php代码运行情况足够用了(偶尔不太稳定)。


内核与扩展:

php内核:
基本上都是Zend Api那套编程接口,熟悉一下,就可以很容易编写php extension。前提是要了解一下php脚本执行时,php内核的内部的运行机理. 可以参考下面的几个文档 
http://www.php.net/manual/en/internals2.php 
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/ 

http://devzone.zend.com/317/extension-writing-part-ii-parameters-arrays-and-zvals/ 

http://devzone.zend.com/446/extension-writing-part-iii-resources/

php扩展:
http://www.laruence.com/2011/09/13/2139.html
这个牛人的博客可以看一下,另外这篇文章里介绍的那几本书也挺不错的。
网上的扩展开发教程很多, 比如:  http://www.laruence.com/2009/04/28/719.html 源码中的ext目录下, 也附带了很多经典的例子. 
要注意的就是, 
1. 使用PHP的扩展构建系统来制作/发布扩展, 不要自己写Makefile,或者build.sh 
2. 尽量优先使用Zend API或者PHP API, 从而在很大程度上保证平台无关性.
3. 尽量只使用c89.
4. 多练习...
2.PHP扩展开发及内核应用
https://github.com/walu/phpbook 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值