PHP学习计划

全文内容为之前某个老师要我写给某些人的,大神请略过。

初级目标

HTML及CSS技术

  1. 这两部分内容要慢慢的消化,不能说当作基础的一部分练来练去,毕竟这不是上课也不是培训,靠得是自学。想必都有了一点的基础,如果没有可以花两天时间看看W3C的文档就可以了。
  2. HTML中要学会这些基本的标签,html,body,head,link,meta,div,p,span,a,i,em,strong,b,ul,li,ol,script,能够了解这些常用(有且不限于此)的就差不多了,试着尝试写无样式的HTML页面,要达到良好的阅读效果。不要急着达到那些花俏的效果,那是CSS做的事情,只需要将HTML写标准,能够将基本的层次关系打理清楚。
  3. CSS 是一个慢慢积累,起初将所有能遇上的样式先过一遍。也就是在你之前编写的HTML页面上进行样式引用,通过适当的设置改变效果,不需要将各种CSS混杂在你的HTML中,这个前提是你已经了解了足够多的HTML标签,并积累了相当多的HTML页面前提下的。否则对于将HTML和CSS混淆编辑没办法达到快速学习和快速了解。
  4. 简要的就是,可以先从百度百科全文复制十多个长的页面,将所有的信息进行纯粹的HTML排版,如果层次合理,用于打印应该是非常合适的,否者就意味着你的HTML层次结构需要调整。在这样的前提下,引入一个或多个CSS文件,通过对各种TAG、CLASS和ID描述,所有的页面应该达到一致的效果。
  5. 在CSS中有几个需要熟悉的就是墨盒模型几种定位方式,其他就需要对属性和值有基本的认识,完全记住是不大可能的。最后的目的就是要达到能够进行任何文档页面布局,对相当复杂的网页能够通过基本的标签组合布局出来,比如hao123等。重要的是不通过图片就能达到相对应效果,才能深入学习CSS。

Javascript与PHP基本语法

Javascript
  1. 首先,下面的内容建立在有点C或其他语言的基础上。
  2. 对于Javascript最开始要做的就是把基础的语法过一遍,可以参考http://www.w3schools.com/js/default.asp上面的内容,也就是要基础的语法要熟悉,然后就是对基本JS对象要有认识,如果某些操作要知道该使用什么类,常用的要了解的有String,Array这两个,其他的可以大致了解有哪些方法。 用的时候记得查询手册就好。
  3. jQuery是个成熟的JS框架,可以快熟的学习它的用法,进行简单的操作,主要涉及到对DOM树的操作,CSS的操作,可以查看官方的英文手册或者http://www.css88.com/jqapi-1.9/查看相关中文手册,如果遇到有关JS一些特性的问题可以看看JavaScript 秘密花园这篇文章的内容,主体上还是要靠自觉学习,不断做一些新的东西才会接触到新的内容,能够深入接触到JS。
PHP
  1. 以上说的都是与PHP无关的内容,PHP一般需要与HTML结合才能做出东西,但PHP能做的东西很多。不仅仅局限于网页,服务端程序,控制台程序都是可以得。
  2. 和JS一样,开始要了解的也是关于基本的语法部分,如果对C比较熟悉,可以当作PHP就是变量前面加了个$符号的语言,其他函数也大多有替代。如果有不清楚的直接百度,或想要的功能函数百度一下就会有。必备的工具之一为PHP官方手册,中文版一般都不大新,加之PHP版本更新快,或多或少会有部分内容遗漏。基础语法的学习可以使用慕课网进行学习,进度会稍慢,如果要快速接触,在W3C上每个过一遍就差不多了。只是基础语法上。
  3. 做了一个假设,就是在基础语法上, 必须考自己花两到三天自行了解和学习。否者思路很难掌握,如果对HTML实现的比较好了,就可以开始进行简单的PHP替换,将文档中的部分内容动态化,以实现对PHP基本语法的熟悉。
  4. 然后就是要对文件函数有一些了解,也就是要对文件基本操作非常熟悉。最简单的方式就是利用PHP写一个网站爬虫,可以利用这些东西去抓取一些页面。比如抓抓豆瓣的图书、电影、音乐的基本信息,并存储在文件中。
  5. 这个中间会遇到一些有关正则表达式的使用,最开始可以直接在网上搜索,拿来主义就可以,否者一次学会自己写正则表达式实在不太现实。

PHP页面编写

  1. 如果有一部分数据可以利用,就比如现有抓取的数据,也就可以利用这些内容,制作一些简单的页面,也就是模仿吧。如果利用文件数据,就需要用到大量文件操作函数,这就是最基本的目的。
  2. 网页大多数涉及到关于表单的操作,也就是信息的提交。简而言之就是要了解PHP的几个全局变量,$_GET,$_POST,$_COOKIE,$_SERVER,还有其他的,前面三个是必须掌握的,实际上就是数组,用起来非常之方便,对于$_SERVER变量要知道其中可以获取到哪些数据,并善于利用。
  3. 文件上传,对于其他语言,PHP上传文件属于最简单的了,知道$_FILES全局变量有哪些信息,并了解其相关函数。可以通过HTML5实现一些关于异步上传和文件预览的效果等等。这里有涉及到多文件上传和单文件上传。
  4. 数组的处理,PHP中用到最多的就是数组了,会看到大量的数组使用。其中explode,implode,array_map,sort等等array_..开头的函数要有大致了解,如果有心情可以考虑自己慢慢用纯粹的for循环实现相关类容,然后再利用看看内置函数有没有这项功能。
  5. 字符串的处理,这里指的是字符串的常用函数strlen,substr,strpos,str_replace等等相关函数,对于中文可以简单了解关于mb_string拓展相关函数,其中就包含编码转换等等。在网页中必不可少的就是这些内容,如果说需要一些高级的用法可以看看preg_相关的函数,其对应的正则用法比较多,需慢慢学习,也就是需要的时候去查就好。
  6. 基本规范,在善于利用isset,empty,unset,is_string,is_array,is_object,is_numeric等等is_开头的函数,可以保证代码中不会出现难以发现问题。同时在代码运行中要尽可能的避免E_NITICE类型错误,除非是内置函数无法避免,少使用@进行错误屏蔽,这样的一般可以通过isset避免。比如在文件操作前可以使用file_exist,is_file,is_dir,is_readable,is_writable等等函数进行检测,就是要保证其健壮性。
  7. 编码一致性问题,对于PHP页面最好全部使用UTF-8编码,不过在Windows下我们默认的编码为GBK,可以大致这样说吧,也有可能是GB2312,如果说对于文件操作时遇到中文字符记得进行编码转换。否则会遇到各种不同类型的错误。头信息的输出使用header函数,此时输出:
    > header(‘Content-Type: text/html; charset=utf-8’);

PHP面向对象

  1. 面向对象这块,PHP在新的版本中是非常强的,支持大量的新特性,不一定要非常了解,但一些基本的要清楚。比如__construct,__set,__get之类的接口方法,要适当了解,不要滥用很重要。这一点和Java是很像的,如果说能够有一定基础,在文档的帮助下,写PHP的类是非常轻松的。
  2. 最初进行PHP面向对象,可以说往往是对某些常用方法的封装,也就是将一堆函数包含在一个类中,将一些功能进行集成,这样就是最简单的。不需要考虑太多的设计模式等等。可以深入学习关于面向对象一些思想后再进行编写高级功能。
  3. 面向对象的好处就是将代码逻辑进行简化,使其看起来更清晰。如果说某些东西不需要进行特意的封装就不用去理会,用函数是更好的实现,效率毕竟更高,也更容易维护。

中级目标

Mysql数据库

  1. 首先假设会进行基本的表的创建操作,以及增“删“改“查,可以参考W3C有数据库的操作,进行学习一遍,基础好一遍就差不多了。通常要了解一部分简单汇总函数,如count,sum,agv等。
  2. 数据库操作应该进行封装处理,单独在页面中是非常不合理的。如果可以,应该优先利用PDO进行操作,在环境不允许的前提下可以使用mysqli库操作,记得所有字段的数据都应该进行转义处理,可以参考一个数据库的类medoo,对于数据库的操作。
  3. 查询,尽可能的少利用*选择全部字段,一般列出需要的即可。能够使用单表操作就单表,不要刻意用多表查询,使用时应该用内连接,左连接,右连接的方式。
  4. 对于表的查询与建立,这就需要自己去了解了,达到第三范式就差不多了。适当的冗余是可以得,在使用过程中可以减少表之间的连接。对于互联网项目尽可能少使用外键或者触发器之类的。

AJAX,JSON的使用

  1. 这两块应该是很难区分的,直接学习关于jQueryajax,get,post三个方法的使用,ajax基本就差不多了。毕竟涉及到的东西就那么一点。这里可能就会涉及到两个相关的东西了,JSON与PHP相关的函数。
  2. JSON可以理解为Javascript中的原生数据对象,包含数组和值等等。可以利用js直接解析和使用。具体如
    > {status:true,strong:0,msg:’‘,data:[‘a’,’b’]}

  3. PHP可以通过json_enstrong,json_destrong将转换或生成JSON数组,注意相关参数,必要情况下需要强制转换部分内容。比如在输出JSON数据到浏览器之前需要使用header函数输出相应的相应头信息。如,此时要输出:
    > header(“Content-Type: text/application; charset=uft-8”);

  4. header函数有相应的高级用法,涉及到很多内容。有必要了解相应的HTTP状态协议,200,400,403,500等等,大量的属性。相关页面W3C HTTP MESSAGES,遇到其他属性可以在对应情况下查询,比如对缓存的控制。

ThinkPHP 或 CodeIgniter 框架应用

  1. 如果接触到大量的内容后可以考虑开始接触一些框架,然后开始快速开发。PHP的优势就在于开发快,能够非常快的上手。PHP的框架往往是一大堆的类库堆砌而成,不如JAVA的三大框架那样复杂。当然也有复杂的,可以先搞定简单的,然后再搞定复杂的也可以,需要的只是一定的时间去学习。在ThinkPHP中,用起来是比较容易的,虽然有这样一个MVC模式,但也是一个伪面向对象的实现。提供大量的工具类库,就是为了方便。CI框架则是一个非常轻量级的框架,完全可以作为学习之用,这两个都是用于学习。同时可以借鉴其中类和工具的写法。
  2. ThinkPHP和CI学习最好的方法还是用来做一些实用的例子,比如将之前所做过的页面进行重构,期间用到的东西会必然的查看手册等等,访问各大社区也是必要的。主要的是善于利用搜索引擎,有能力自行翻墙上Google,搜索是必备,如果不行尝试下,否者就只好百度、必应搜索之类的了。最后才是问人或去社区提问。

完整实现

  1. 在接触了足够的基础内容之后,下一步就是利用现有的东西,完整的实现一个系统,无论是使用框架还是原生页面的操作。都需要一个具体的内容进行操作。
  2. 可以考虑的是单入口,最开始的页面往往是多入口的,这是由PHP的特性决定的,看过ThinkPHP和CI后能接触到部分单入口的程序,了解其中的好处后。试着使用此类方式,建立相应的模板,达到代码复用的目的,也便于权限的管理。
  3. 功能的模块化,可以得化这样去实现,在框架中能很好的体现,但实际中不一定,所以要有相应的基础。尽可能的做到最好吧,第一次不可能非常完美。功能是一步一步的完善的,然后慢慢重构就好了。

高级目标

Linux网站的管理与配置

  1. 首先说的是Window下环境的配置,可以使用各种现成的集成环境,也可以是手动一步一步的配置。当然最好是自己配置,具体步骤就那么些。只是所有东西最好使用绿色版,而不是使用安装版,绿色版Apache
  2. Linux基本使用,熟悉常用命令,ls,cd.vim,ifconfig,netstat。然后使用一个服务器发行版本,CentOS,Debain,Ubuntu都可以,然后熟练使用yum或者apt-get安装或管理软件,对应的需要的软件有httpd,mysql,php以及相关php-开头的拓展库,如果需要使用Nginx可以添加EPEL源后安装,同时安装php-fpm,php-cli等等软件。期间需要了解这些软件的原理,以及这样搭配的原因,具体参考网上的文章。
  3. 虚拟机和伪静态的配置,在PHP中这两块是非常重要的。虚拟机意味着不同的域名和IP之间有这不同的内容。属于一种简单的多网站配置,同时还需要了解有关服务器所需的权限问题,其中有关于用户组,读写,SELinux等问题。伪静态则是很重要的一块,绝大数网站都会用到这项技术,也就是用于页面的SEO优化等,可以查看相关内容。
  4. 缓存服务的配置,比如PHP结合的较多的有Memcache,如果要使用,在没有安装源的情况下,可以考虑自行编译一个来用,这就需要掌握一定Linux编译技术了,大多数在网上可以找到相关信息。

Memcache 等

  1. 往往会于遇到数据库过慢的情形,这时候就需要用到缓存。一般分为页面缓存和对象缓存,页面缓存就是将相关页面临时保存在磁盘上或数据库中,这样能大大减少数据库的查询,加快运行速度。对象缓存,一般使用的是键值数据,这样的数据使用唯一变量保存在内存中,需要的时候进行调用,命中率很高,对效率是大大的提升。典型的有memcache,其他的还有redis等等
  2. 其他的内容更复杂的内容就属于NoSQL之类的了,适当的学习,在条件合适的时候能够发挥较大的作用。

简单MVC及设计模式

  1. 接触了很多东西之后,可以自己试着造造轮子,不要担心重复的劳动。优雅和高效的代码是可以借鉴的,自己抄出一套东西为自己所用才是合适的,没人说有一个框架是万能的,特别是在PHP这种框架成堆的语言中。
  2. 设计模式是必须学习的一个东西,如果对于设计模式没有一定的了解,看别人的源码或多或少会遇到各种不解的地方,因此这是相对重要的一块。经典的设计模式学习对于一个入门者是一个点拨,教会你该如何重构你的代码,让其更优雅,更具价值。

大型框架学习

  • 这是一个漫长的过程,了解的内容将会很多。深坑,有时间有经历可以考虑。

数据库优化

  • 很重要,瓶颈往往在数据库。

正则表达式

  • 你值得拥有,解决你的各项疑难杂症。

后话

  • 仅代表个人观点
  • 欢迎表达不同意见
  • 个人学习方式可能只适合少部分人

38条评论在“PHP学习计划”

  1. 好文,值得新手借鉴。asp启蒙的表示php真心好,所以用过一次php之后就果断抛弃以前所有的asp程序,哪怕花费了再多的心血。。

  2. 对新人来说很有用,一直想学php来着,但一直不知道从哪里下手,现在看来自己连html都还没有完全掌握,就想去学php唉。。

写下你最简单的想法