学习计划
当前位置:首页 > 工作计划 > 学习计划 > 列表页

php学习计划

小草范文网  发布于:2017-05-10  分类: 学习计划 手机版

篇一:php项目开发经验-2个月学习php经历

php项目开发经验-2个月学习php经历.txt人生在世 ,难敌宿命,沉沦其中。我不爱风尘,似被前缘误!!我只为我最爱的人流泪“我会学着放弃你,是因为我太爱你”赢了你,我可以放弃整个世界 php项目开发经验-2个月学习php经历

@author xueyms @since 2020-04-02

两个月前我几乎完全不会PHP,糊里糊涂的接手了一个手机网游门户的开发,临阵退缩是没有用的,IT技术作为现今工业社会里更新换代最快的一个行业,任凭谁也不可能全部掌握所有的技术,作为一个优秀的开发人员,随时学习新技术并且尽可能的最快掌握应用到项目中,便是必需具备的基本素质。手艺总是多少有一些相通之处和可继承的,琵琶弹得好、学习吉他自然也不难,从钢琴到小提琴跨度是有点大、但是音乐知识也是一样的。快速的学习需要扎实的基础、准确找出共通点的敏锐触角、举一反三的领悟力、锲而不舍寻求答案的毅力。PHP是一只两栖动物,自5.0之后开始支持面向对象,但是同时兼容面向过程的编写。这特性使得PHP容易上手却难以精通。两个月里摸着石头过河,边学边做到最后项目完成,不敢以高手自居,多少掌握了一些PHP学习和编程的小窍门,为了避免如我一样的初学者或项目需求者多走弯路,特地整理一下心得与同行分享。

与国外和香港台湾地区相比,国内的PHP程序员相对较少,精通的更是为数不多。一个很大的原因是中国大陆是盗版大国,大伙都爱用Windows系统,用.Net写程序,用Sqlserver存储数据,反正微软不会上门开罚单。两个月的项目开发周期过去了一个月,后台系统我都几乎写完了还没有招到我满意的PHP程序员。有两个合符标准的,一个因为个性有点特立独行,另外一个要价7K超出公司预算被我Pass掉,导致最后我招了一个编程基础比较好的小伙子进来自己带。当我还在上一家公司做.Net项目时,有个同事曾经对我说他羡慕PHP程序员的薪资高,我当时不以为然,那种程序写得好薪资不高?现在倒有了更深的认识,PHP程序员薪资高,不是因为PHP程序写得好,一般而言相关的技能也得有相当的程度。随便在网上找一份PHP程序员的招聘一起看看。

1. 两年以上PHP开发经验,熟悉smarty模板,熟悉Linux+Apache+Mysql+PHP架构,熟悉Zend架构者尤好;

2. 具有MySQL索引优化、查询优化和存储优化经验、PHP缓存技术、静态化设计方面的经验;

3.熟悉Discuz!,UCHome产品,能做二次开发;

这也是我招人时所要求的。一般而言,PHP的项目不会用微软的windows平台和sqlserver数据库,除非公司足够大,不然linux服务器的管理便是由PHP程序员兼顾。Mysql数据库可不像微软的Sqlserver那么傻瓜化,配置与调优是一门大学问。稍为正式一点的门户都会搭配着上Discuz论坛或者UCHome,整合与二次开发便是无可避免的事情。当一个PHP程序员具备这些技能时,薪资高些也在情理之中。各位学PHP的朋友们,看到这里应该对自己的学习计划有比较清楚的认知了吧。

作为开源世界的前锋,PHP有很多优秀的架构,如Zend, CakePhp, Symfony等等。其实一直到项目开发完毕我才开始接触Zend,一个成熟的架构的确能减轻不少工作量,但是如果在项目启动时就贸然上这么大的框架,而本身对PHP技术没有很深了解的情况下是很难驾驭的了

的,势必引发出各种各样棘手的问题。正是考虑到了这一点,所以我步步为营的往前走。先是采用最原始的方式,将PHP与HTML代码混合着编码,做完两个模块后对PHP语法和她的一些特性、怪癖有了清楚的了解后开始加入Smarty模板,将业务逻辑与用户界面进行分离。再做几个模块,搞清楚了Smarty的那套语法、标签和组件后再把数据处理剥离出来形成了MVC架构,一点一点的完善,既保证了开发的进度,也使得系统越来越合理,一直到最后稳当的完成了整个项目,没出大乱子。到了最后再回头来看Zend,CakePhp这些觉得也没什么神秘。

因为开源,所以PHP是个没爹没娘的孩子,不像微软,无论是平台、语言、数据库、IDE全都打上Microsoft Family的烙印,大多数东西微软都封装好了,你不知道为什么,也不需要知道为什么,使用就是了。初用PHP难免会遇到一些奇奇怪怪的问题,例如相对路径与绝对路径、数据库乱码、header跳转报错、session也报错等等。也正是因为开源,所以网络上几乎都有相应的解决方案,只要你真正了解问题的根源,自然能搜索得到相对应的答案。

WEB开发很大的比重是在于数据库的操纵,SQL便是程序员必需精通的一门技能。相信有不少PHP程序员如我一样,是从微软开发平台转行过来的。用习惯了Sqlserver,改用Mysql时也会遇到一些小挫折,毕竟是两家公司不一样的产品。最明显的就是指定行数的关键字top变成了limit,连接符+在mysql中变成了concat等。这些倒都是小事情,记得就是了。有一种SQL却让我有点不爽。如:select * from table1 where userid in (select top 10 id from table2 order by createdate desc),在mysql里因为不支持而改成了select * from table1 where userid in (select id from (select id from table2 order by createDate desc limit

10) as t ) order by createDate desc。这样累赘的语义很让我烦恼总记不住,最后准备了一本mysql cookbook。

PHP是一门优秀的开发语言,以后将会继续大放异彩,特别是在facebook推出hithopPHP之后。真要说到项目开发,那是一本书的篇幅也讲不完的事情。以上只是总结我在开发过程中的感受和经验,真正的应用还得在项目实战中自由发挥。一千个人眼里有一千个哈姆雷特,一千个人就有一千种解决问题的办法,但终究只有一种方法是最有效直接的,编程、就是不停的寻找那种方法。

PHP书籍推荐:

书店里PHP开发的书籍非常多,但真正优秀的却很少。下面推举几本我看过、用过、感觉不错的书供学习参考。

《大道PHP-LAMP+Zend+开源框架整合》 电子工业出版社

这本书是我接手PHP项目后买的第一本PHP书籍,99块人民币,846页的篇幅,一直到项目完成我都没完整看完,只是把它当工具书查阅使用。这本书不太适合初学者,里面有不少案例是错误的,必需修改后才能运行。Zend框架也介绍得太过简单。

《PHP Web2.0开发实战》 人民邮电出版社

老外写的一本书,技术含量比较高,详细介绍Zend架构与Smarty配合使用,所用的案例也是循序渐进步步深入。适合有基础的PHP程序员阅读。

《PHP经典实例》 中国电力出版社

也是翻译自国外,O'Reiely出版社的技术类书籍就好比中华书局的史学书,商务印书馆的学术书一样,绝对可以放心。

篇二:《PHP动态网站设计》课程标准

《PHP动态网站设计》课程标准

1.课程定位

本课程是系统维护专业的专业必修课。在众多的动态网页技术中,PHP作为非常优秀的、简便的WEB开发语言,满足了最新的互动式网络开发的应用,正在成为WEB应用开发和网页技术的主要选择。本课程的主要目的是使学员掌握PHP各方面的知识,掌握WEB应用程序开发的特点和常用的实现方法,具备能够针对性某一行业进行网站开发、对开源代码进行二次开发的能力,具备一定的独立网站编程能力。

2.课程目标

通过课程的学习,使学生掌握使用PHP各方面的知识,掌握基本的网站设计技巧,具备一定的网站编程能力,并能较熟练应用PHP在WINDOWS环境下进行网站的编程。

2.1知识目标

1.了解PHP的特征及功能,掌握PHP的基础知识和核心技术。

2.掌握PHP的安装及配置,掌握PHP的调试方法,熟悉PHP在整站程序中的作用。

3.掌握PHP进行WEB开发的全过程。

4.通过大量地PHP开源实例中相关技术点的剖析讲解,使学生了解PHP各知识点在WEB开发中的作用,掌握PHP编程技巧。

5.对实际的网页效果和网站应用程序分析,熟悉整个网站的设计思路和架构。

2.2能力目标

使学生通过该门课程的学习,能基本了解PHP的基础知识及其安装调试,会设使用PHP进行简单的WEB网站的开发,具备对PHP开源实例的剖析能力,掌握编程技巧。

2.2.1专业能力:具备一定的动态网站设计的概念,具备安装、配置和调试PHP的能力,具备使用PHP进行动态网页制作和应用技巧的能力,具备一定的网站点设计思路和架构,培养学生开发动态网站的能力。

2.2.2社会能力:让学生能尽快地适应企业需求、适应就业岗位的要求和提供学生持续发展的需要;培养具有良好的职业道德、科学的创新精神和熟练技能的应用型人才,具备沟通和协调能力,具有团队协作精神、超强的心理素质、诚信品格、社会责任感。

2.2.3方法能力:通过该门课程的学习,具有较强的自学能力和新知识和新技能的应用能力,具有较强的分析问题和解决问题的能力,让学生在动态网站设计与制作的实践中学会独立学习、独立思考的能力。

3.教学内容及教学设计

本课程在教学中打破传统学科课程模式,采用以情境为导向的案例学习课程模式。根据职业岗位需求,开展广泛调研,在确定教学内容的基础上,采用工作过程系统化的课程开发技术,遵循高职的职业教育理念,确定本课程学习目标和学习情境设计。让学生在学习情境中学习并掌握动态网页设计所必须的理论知识与基本技能,培养学生独立的网页设计能力。

教学内容的选取主要从网页设计师职业能力的要求去精选适合的专业理论知识并结合实际岗位需要进行教学设计,力图达到理论知识的传授与职业岗位需要相结合。共设计了5个学习情境,具体如下:

学习情境、内容排序及学时分配见下表:

学习情境设计

篇三:PHP 程序员的个人PHP培训技术成长规划

PHP 程序员的个人技术成长规划

按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标。

本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言。(未来技术变化不在讨论范围)

第一阶段:基础阶段(基础PHP程序员)

重点:把LNMP搞熟练(核心是安装配置基本操作)

目标:能够完成基本的LNMP系统安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支持某个PHP功能模块的开发。

时间:完成本阶段的时间因人而异,有的成长快半年一年就过了,成长慢的两三年也有。

1. Linux :

基本命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);会写简单的shell脚本和awk/sed 脚本命令等。

2. Nginx:

做到能够安装配置nginx+php,知道基本的nginx核心配置选项,知道 server/fastcgi_pass/access_log 等基础配置,目标是能够让nginx+php_fpm顺利工作。

3. MySQL:

会自己搭建mysql,知道基本的mysql配置选项;知道innodb和myisam的区别,知道针对InnoDB和MyISAM两个引擎的不同配置选项;知道基本的两个引擎的差异和选择上面的区别;能够纯手工编译搭建一个MySQL数据库并且配置好编码等正常稳定运行;核心主旨是能够搭建一个可运行的MySQL数据库。

4. PHP:

基本语法数组、字符串、数据库、XML、Socket、GD/ImageMgk图片处理等等;熟悉各种跟MySQL操作链接的api(mysql /mysqli/PDO),知道各种编码问题的解决;知道常规熟练使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf 等);了解基本MVC的运行机制和为什么这么做,稍微知道不同的PHP框架之间的区别;能够快速学习一个 MVC框架。能够知道开发工程中的文件目录组织,有基本的良好的代码结构和风格,能够完成小系统的开发和中型系统中某个模块的开发工作。

5. 前端:

如果条件时间允许,可以适当学习下 HTML/CSS/JS 等相关知识,知道什么web标准,div+css的web/wap页面模式,知道 HTML5和HTML4的区别;了解一些基本的前端只是和JS框架(jQuery之类的);了解一些基本的JavaScript编程知识;(本项不是必须项,如果有时间,稍微了解一下是可以的,不过不建议作为重点,除非个人有强烈兴趣)

6. 系统设计:

能够完成小型系统的基本设计,包括简单的数据库设计,能够完成基本的:浏览器 -> Nginx+PHP ->数据库架构的设计开发工作;能够支撑每天几十万到数百万流量网站的开发维护工作;

第二阶段:提高阶段(中级PHP程序员)

重点:提高针对LNMP的技能,能够更全面的对LNMP有熟练的应用。

目标:能够随时随地搭建好LNMP环境,快速完成常规配置;能够追查解决大部分遇到的开发和线上环境的问题;能够独立承担中型系统的构架和开发工作;能够在大型系统中承担某个中型模块的开发工作;

1. Linux:

在第一阶段的基础上面,能够流畅的使用Shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作;基本能够安装大部分非特殊的Linux程序(包括各种库、包、第三方依赖等等,比如MongoDB/Redis/Sphinx /Luncene/SVN之类的);了解基本的Linux服务,知道如何查看Linux的性能指标数据,知道基本的Linux下面的问题跟踪等。

2. Nginx:

在第一阶段的基础上面,了解复杂一些的Nginx配置;包括多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超时等相关配置和性能影响;知道nginx除了web server,还能够承担代理服务器、反向静态服务器等配置;知道基本的nginx配置调优;知道如何配置权限、编译一个nginx扩展到nginx;知道基本的nginx运行原理(master/worker机制,epoll),知道为什么 nginx性能比apache性能好等知识;

3. MySQL/MongoDB:

在第一阶段的基础上面,在MySQL开发方面,掌握很多小技巧,包括常规SQL优化(group by/order by/rand优化等);除了能够搭建MySQL,还能够冷热备份MySQL数据,还知道影响innodb/myisam性能的配置选项(比如key_buffer /query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit等),也知

道这些选项配置成为多少值合适;另外也了解一些特殊的配置选项,比如知道如何搭建mysql主从同步的环境,知道各个binlog_format的区别;知道MySQL的性能追查,包括slow_log/explain等,还能够知道基本的索引建立处理等知识;原理方面了解基本的MySQL的架构(Server+存储引擎),知道基本的InnoDB/MyISAM索引存储结构和不同(聚簇索引,B树);知道基本的InnoDB事务处理机制;了解大部分MySQL异常情况的处理方案(或者知道哪儿找到处理方案)。条件允许的情况,建议了解一下NoSQL的代表MongoDB数据库

php学习计划

,顺便对比跟MySQL的差别,同事能够在合适的应用场景安全谨慎的使用MongoDB,知道基本的PHP与MongoDB的结合开发。

4. Redis/Memcached:

在大部分中型系统里面一定会涉及到缓存处理,所以一定要了解基本的缓存;知道Memcached和Redis的异同和应用场景,能够独立安装 Redis/Memcached,了解Memcahed的一些基本特性和限制,比如最大的value值,知道PHP跟他们的使用结合;Redis了解基本工作原理和使用,了解常规的数据类型,知道什么场景应用什么类型,了解Redis的事务等等。原理部分,能够大概了解Memcached的内存结构(slab机制),redis就了解常用数据类型底层实现存储结构(SDS/链表/SkipList/HashTable)等等,顺便了解一下Redis 的事务、RDB、AOF等机制更好

5. PHP:

除了第一阶段的能力,安装配置方面能够随意安装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引擎/扩展基本工作机制);

6. C/C++:

开始涉猎一定的C/C++语言,能够写基本的C/C++代码,对基本的C/C++语法熟悉(指针、数组操作、字符串、常规标准API)和数据结构(链表、树、哈希、队列)有一定的熟悉下;对Linux下面的C语言开发有基本的了解概念,会简单的makefile文件编写,能够使用简单的 GCC/GDB的程序编译简单调试工作;对基本的网络编程有大概了解。(本项是为了向更高层次打下基础)

7. 前端:

在第一阶段的基础上面,熟悉基本的HTTP协议(协议代码200/300/400/500,基本的HTTP

交互头);条件允许,可以在深入写出稍微优雅的HTML+CSS+JavaScript,或者能够大致简单使用某些前端框架(jQuery/YUI/ExtJS/RequireJS/ Bootstrap 之类);如果条件允许,可以深入学习JavaScript编程,比如闭包机制、DOM处理;再深入些可以读读jQuery源码做深入学习。(本项不做重点学习,除非对前端有兴趣)

8. 系统设计:

能够设计大部分中型系统的网站架构、数据库、基本PHP框架选型;性能测试排查处理等;能够完成类似:浏览器 -> CDN(Squid) -> Nginx+PHP ->缓存 ->数据库结构网站的基本设计开发维护;能够支撑每天数百万到千万流量基本网站的开发维护工作;

第三阶段:高级阶段(高级PHP程序员)

重点:除了基本的LNMP程序,还能够在某个方向或领域有深入学习。(纵深维度发展)

目标:除了能够完成基本的PHP业务开发,还能够解决大部分深入复杂的技术问题,并且可以独立设计完成中大型的系统设计和开发工作;自己能够独立hold深入某个技术方向,在这块比较专业。(比如在MySQL、Nginx、PHP、Redis等等任一方向深入研究)

1. Linux:

除了第二阶段的能力,在Linux下面除了常规的操作和性能监控跟踪,还能够使用很多高级复杂的命令完成工作(watch/tcpdump /starce/ldd/ar等);在shell脚本方面,已经能够编写比较复杂的shell脚本(超过500行)来协助完成很多包括备份、自动化处理、监控等工作的shell;对awk/sed/perl 等应用已经如火纯青,能够随意操作控制处理文本统计分析各种复杂格式的数据;对Linux内部机制有一些了解,对内核模块加载,启动错误处理等等有个基本的处理;同时对一些其他相关的东西也了解,比如NFS、磁盘管理等等;

2. Nginx:

在第二阶段的基础上面,已经能够把Nginx操作的很熟练,能够对Nginx进行更深入的运维工作,比如监控、性能优化,复杂问题处理等等;看个人兴趣,更多方面可以考虑侧重在关于Nginx工作原理部分的深入学习,主要表现在阅读源码开始,比如具体的master/worker工作机制,Nginx内部的事件处理,内存管理等等;同时可以学习Nginx扩展的开发,可以定制一些自己私有的扩展;同时可以对Nginx+Lua有一定程度的了解,看看是否可以结合应用出更好模式;这个阶段的要求是对Nginx原理的深入理解,可以考虑成为Nginx方向的深入专业者。

3. MySQL/MongoDB:

在第二阶段的基础上面,在MySQL应用方面,除了之前的基本SQL优化,还能够在完成一些复杂操作,比如大批量数据的导入导出,线上大批量数据的更改表结构或者增删索引字段等等高危操作;除了安装配置,已经能够处理更多复杂的MySQL的问题,比如各种问题的追查,主从同步延迟问题的解决、跨机房同步数据方案、MySQL高可用架构等都有涉及了

解;对MySQL应用层面,对MySQL的核心关键技术比较熟悉,比如事务机制(隔离级别、锁等)、对触发器、分区等技术有一定了解和应用;对MySQL性能方面,有包括磁盘优化(SAS迁移到SSD)、服务器优化(内存、服务器本身配置)、除了二阶段的其他核心性能优化选项(innodb_log_buffer_size/back_log/table_open_cache /thread_cache_size/innodb_lock_wait_timeout等)、连接池软件选择应用,对show * (show status/show profile)类的操作语句有深入了解,能够完成大部分的性能问题追查;MySQL备份技术的深入熟悉,包括灾备还原、对Binlog的深入理解,冷热备份,多IDC备份等;在MySQL原理方面,有更多了解,比如对MySQL的工作机制开始阅读部分源码,比如对主从同步(复制)技术的源码学习,或者对某个存储引擎(MyISAM/Innodb/TokuDB)等等的源码学习理解,如果条件允许,可以参考CSV引擎开发自己简单的存储引擎来保存一些数据,增强对MySQL的理解;在这个过程,如果自己有兴趣,也可以考虑往DBA方向发展。MongoDB层面,可以考虑比如说在写少读多的情况开始在线上应用MongoDB,或者是做一些线上的数据分析处理的操作,具体场景可以按照工作来,不过核心是要更好的深入理解 RMDBS和NoSQL的不同场景下面的应用,如果条件或者兴趣允许,可以开始深入学习一下MongoDB的工作机制。

4. Redis/Memcached:

在第二阶段的基础上面,能够更深入的应用和学习。因为Memcached不是特别复杂,建议可以把源码进行阅读,特别是内存管理部分,方便深入理解;Redis部分,可以多做一些复杂的数据结构的应用(zset来做排行榜排序操作/事务处理用来保证原子性在秒杀类场景应用之类的使用操作);多涉及 aof等同步机制的学习应用,设计一个高可用的Redis应用架构和集群;建议可以深入的学习一下Redis的源码,把在第二阶段积累的知识都可以应用上,特别可以阅读一下包括核心事件管理、内存管理、内部核心数据结构等充分学习了解一下。如果兴趣允许,可以成为一个Redis方面非常专业的使用者。

5. PHP:

作为基础核心技能,我们在第二阶段的基础上面,需要有更深入的学习和应用。从基本代码应用上面来说,能够解决在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。

6. C/C++:

本文已影响