PHP企业开发攻略 – 初学者必看
前言: 在我读到过的几乎所有文章、书籍或者网络日志中,“PHP不能做企业开发”(或者类的语言)都被那些所谓的“砖家”放在嘴边。这简直是胡说八道!无耻至极!只有那些光说不练的人有这样的心态! PHP不仅是Web开发的能手,对于企业开发,同样擅长。 一、
前言:
在我读到过的几乎所有文章、书籍或者网络日志中,“PHP不能做企业开发”(或者类似的语言)都被那些所谓的“砖家”放在嘴边。这简直是胡说八道!无耻至极!只有那些光说不练的人有这样的心态!
PHP不仅是Web开发的能手,对于企业开发,同样擅长。
一、学习目标
学习PHP不仅学习的是一门语言,更多的是学习一种编程思想,一种开发模式,从事软件行业的工作人员,如果真正掌握了PHP语言,那么,可以让自己日后的事业发展的更加顺利。
在众多企业开发平台(指Java,.NET)流行的今天,PHP语言以其简洁的语法、众多的厂商支持,成为了企业平台开发的后起之秀,掌握了PHP也就相当于掌握了众多厂商提供的产品,从而为自己今后的事业发展提供了更多的选择。
不仅如此,PHP语言由于体系完整,所以相比较起来,PHP开发人员可以很轻松地转入到手机开发、.NET、Java等语言的开发上,以后也可以更快的跨入到项目管理和项目分析的行列之中。
二、企业开发平台
图例为企业开发平台的组成部分及与PHP技术的对应关系。
在企业进行企业开发的过程中,我们可以发现,所有的开发完全是通过中间件来完成程序和数据库之间的操作,因此,在整个企业开发环境下,数据库是一个非常重要的操作,而要想让数据库操作更加合理,就要有很强的程序逻辑和良好的系统设计的能力。
三、PHP与PHP EE间的关系
PHP其实也是一种企业平台的开发技术,包含了很多的技术,使用PHP开发的企业技术,我们可以称之为PHP EE,因此,每个初学者首先必须搞清楚PHP SE和PHP EE 的关系,如图所示。
从上图可以清楚的发现,如果要想进行PHP EE的开发,PHP SE是其中必要的组成部分,这也就是为什么在学习PHP EE 之前,初学者必须要有扎实的PHP SE的基础的原因了。
四、PHP SE的核心技术
在PHP SE核心的部分主要有四个,这四个是直接与日后的PHP EE开发有关的。
1、面向过程/面向对象
PHP支持两种模式的开发,一种称为:面向过程的开发,另一种称为:面向对象的开发,在这里我们主要来说一下后者,主要是要求初学者建立好一个面向对象的概念,并可以灵活的运用这些概念进行程序的分析,可以说在整个PHP SE部分核心就是面向对象的开发,里面涉及的概念较多,但是所有的概念最终都是为接口和抽象类服务的,而所有PHP开发中涉及到的各个设计模式,实际上也是针对于接口和抽象类的应用。当然,并不局限于一种方法,在很多情况下,面向过程更高效,快捷。
PHP不是面向对象的专有语言,C++同样也不是,它只是在C语言的基础上增加了面向对象的支持,PHP也一样。相比于Java语言来说,这类语言应该归为混合型语言当中。这也就意味着,PHP可以根据项目或产品的实际需要,选择相应的开发模式。
2、类集框架与标准函数库
大部分的初学者都应该听过或学习过数据结构,虽然从大学就开始学习《数据结构与算法》,但是实际上来讲,学习完后真正可以进行数据结构编写的人并不多,而且大部分的数据结构都是以C语言为基础讲解的,而类集框架就相当于是PHP实现的数据结构,包括树、链表、队列等等,如果只是进行应用层次开发的读者没有必要深入了解其内部的操作,但是必须清楚的掌握其核心的接口和各个操作类。
在PHP中用到的最多的与数据结构有关的结构就那么几个(字符串,数组,以及由基本的数据结构组成的复合结构等)。
PHP提供了大量的函数库,可以根据实际的需要选取相应的函数库,当然,也可以选取一些常用的第三方类库,用以方便实现标准函数库及类集框架不能实现的特殊功能。
3、IO操作
对于大部分的自学者而言,IO操作也许是最容易的了,在PHP中输入输出操作要比其它语言来的更容易,更方便,当然,它也提供了其它一些语言的优点,也提供了面向对象的方法。
4. PHP数据库操作
PHP提供了大量的关于数据库操作的技术,提供了标准的MySQL扩展,以及面向对象的MySQLi扩展;同时也提供了数据库抽象层技术,里面提供了大量的操作接口,各个数据库生产商根据这些接口实现自己的数据库操作,从面向对象的设计上来看,用户完全没有必要考虑其接口是如何实现的,而更多的是关心如何使用这些接口。而且从现在的项目开发中,初学者可以清楚的发现,大部分的开发都是基于数据库的开发。
虽然PHP SE核心是以上四个,但是对于程序开发,每一位初学者应该建立起一些基本的程序思路,对于初学者来讲,应该将PHP SE基础知识点打牢,基本的循环操作要明白,例如:打印正三角形、九九乘法表、冒泡算法等都是一些基本的要求。
而且在学习程序的开发上没有任何的捷径,每一位普通人肯定都需要进行反复的代码熟练才能将代码运用明白,就好象练习武功一样,只有坚持练习,才能让自己的动作收发自如,灵活运用。只有敲熟了,用的时候代码就自然而然的写出来了,所以只有勤学苦练才能牢固的掌握编程语言,世界上或许有程序天才,但是我们自己承认和大部分人一样,都是普通人,都是每一步一个脚印走出来的。
五、企业平台开发架构
在PHP企业开发平台中,有三套开发架构:标准开发架构、开源开发架构、混合开发架构
- 标准开发架构:就是使用了标准的PHP EE开发技术,使用HTML/XHTML、PHP进行开发。标准架构可以单独使用PHP/HTML/XHTML技术开发,也可以通过Web Service和XML_RPC完成分布式开发,但是此套开发架构的成本较高,所以在现在的开发中开源框架技术也较为常用。
- 开源开发架构:就是我们经常提到的ZF(zendframework)、CP(cakephp)、CI(codeigniter)等框架技术,这些都只是标准开发技术的衍生产品。
- 混合开发架构:由于PHP在处理Web流程要比其它语言更简便,你可以对比一下表单的处理就可以看出,所以,经常会那它作为web层,而应用部分使用其他语言开发(比如:Java或.net组件等),这些在一些大型的项目中会经常遇到,它降低了开发难度,提高了开发效率,当然,对人员的水平要求也会随之提高。
六、学习步骤
有时我们经常看到有不少初学者都在问:“我只学过C语言,我能学会PHP吗?”
在这里要说一下,学过C语言的人会发现,学习PHP会非常的简单,因为,它们的语法基本上是相同的,所以,基础方面入门很快。其实,你如果好好看过其他语言书,你应该发现,这些程序语言都是相通的,核心的内容就是关键字、基本控制、数组、方法(函数),函数库;根据不同的平台找不同的方法,所以不要被各个语言所迷惑,也不要觉得难,因为当你自己完全学会了一门语言之后,其他的就都学会了。
通过我们实际的指导学习PHP的过程中,可以参照以下步骤:
1)重点掌握:充分的理解每一个知识点,代码编写熟练
- PHP的主要作用、特点、开发环境
- 程序的基本结构、关键字。
- 各种循环控制、运算符。
- 字符串的定义、字符串的常用功能、正则表达式的用法,这部分的重点其实就是正则表达式。
- 数组的定义、数组的两种基本类型、遍历数组、合并数组、字符串与数组的转换、数组的基本操作。
- 类与对象、类的定义结构、构造方法、private、static、this、::、引用传递、内部类,这部分内容一定要掌握简单类的开发方法。
- 类的扩展、super、final、抽象类、接口、多态、对象克隆、对象检测、实际分析。
- 异常的产生原因、标准异常的处理语句格式、try、throw、catch
1、PHP常用的函数库
在学习的时候不要花太多的精力去记住函数的使用方法,关键是要学会如何查询文档,PHP提供的函数太多了,每个人是不可能全部记下来的,用到何种功能大概可以想起来,之后通过文档查询其具体用法就行了,没有一个人可以将所有的函数库都背下来,只需要将常用的灵活掌握即可。例如:日期时间处理函数、正则表达式函数、字符串处理函数、数组处理函数、图像处理函数等。
个人建议:有关数据结构部分的函数还是应该好好复习一下。
2、PHP类集的作用及使用
PHP除了提供了一些标准的函数库之外,还提供一些标准类集框架(也叫标准PHP库),它在5个关键的方面提升了PHP语言,包括:迭代器、异常、数组重载、XML以及文件和数据处理能力。它还提供了另外一些有用的项,例如观测者模式、计数功能、用于对象标识符的辅助函数以及迭代器处理功能。此外,它还提供了用于自动加载类和接口的高级功能。
但这部分在学习的时候不需要花太多的时间,因为在实际的开发过程中,用的时候不是特别多。
个人建议:可以忽略不计,在学习OO的时候再来学习也不迟。
3、PHP IO
面向对象和面向过程的体现,文件处理、Stream Classes、Serializable等
4、MySQL、SQL命令、Statement、PreparedStatement、ResultSet、事务处理。
个人建议:主要掌握查询语句。以及CURD语句。
2)理解掌握内容:掌握其运行的基本效果,具体的代码可以不用全部灵活掌握
表单处理:运行形式、几种实现方式及区别
会话处理:两种机制及实现方式
XML处理:数据交换的方式及读写方式
PHP输入输出缓冲:读取、写入操作
PHP反射机制:重点部分就是在于如何取得Class对象,并且进行对象的实例化操作。
PHP开发工具:开发工具本身不能算是重点,初学者一定要记住:只要程序会编写了,则开发工具也就自然会使了。
PHP SE学习完之后,我建议初学者最好先学一下数据库的相关知识,从整个中国的软件开发来看,Oracle、MySQL、MS SQL Server三个数据库使用较多,但是个人认为,学习MySQL会比较好一些,而且初学者必须记住一点,在PHP的开发中如果使用了MySQL则性能是最高的,故:在此我推荐的就是MySQL数据库,其次、是MS SQL Server;现在有很多人推荐Oracle,不是说Oracle不好,是因为Oracle成才率太低,投资比并不是最佳。另外,初学者也必须清楚一点,我们是程序开发人员,而数据库管理是另一门学科,在学习数据库的时候应该将更多的重点放在SQL语句的编写上。
最后希望每一位初学者都可以学有所成,因为从我个人的学习来看,只要学会了PHP,则.NET或其它一些静态语言都可以很容易的学会,如果你自己本身还喜欢窗口开发的话,也可以学学PHP GTK开发,实际上也都是很容易的,从一点一滴积累,现在就开始努力吧,我们铭家在线会给大家的学习提供最好的资料,最好的帮助。
附记:
其实,上面介绍的学习步骤,其实,我们在其他语言的培训或相应的图书中经常会遇到。它们其实采用的就是语法+案例+API+所谓工程案例的介绍模式,这种讲解模式已经越来越不适合现在软件开发的要求,有关这个话题,我以后会讲到,这里就先埋个地雷。
说了那么多,希望对学习PHP的人有所启发和帮助,也希望你能对我的文章提点宝贵的建议,留言评论最好!
上面这篇文章以前在LAMP兄弟连的杂志中发表过,有删改!
更多的内容参见我的博客:www.ityouku.com