面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候再一个个的依次调用即可. 优点:性能高 缺点:相较于面向对象而言,不易维护,不易复用,不易扩展 适合于小型的项目面向对象编程:把事务分解成为一个个对象,然后由对象之间分工与合作. 优点:易维护,易复用,易扩展,低耦合,系统更加灵活 有三大特性:封装,继承,多态 缺点:性能比面向过程低 适合多人协作的大型项目 用面向过程的方法写出来的程序就像是一份蛋炒饭,先炒蛋,混合些洋葱粒,胡萝卜丝,豌豆,翻炒片刻,再把饭加入锅里,…
传统的面向过程 将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标. 现代的面向对象 将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自己的任务,任务之间的链接通过“调用”来实现,最终也完成了整体的工作. 万事万物都是对象. 面向对象是设计思想的“升华”——面向过程是解决简单问题的自然的思维过程,面向对象是解决大规模的复杂问题的良好思想. 面向对象基本概念 面向对象三大特性:封装  继承inherit  多态 类与对象 抽象与具体…
和一些面向对象的语言有所不同,PHP并不是一种纯面向对象的语言,包PIP它支持面向对象的程序设计,并可以用于开发大型的商业程序.因此学好面向对象输程对PHP程序员来说也是至关重要的.本章并针对面向对象输程在PIP语言中的使用进行详细讲解. 2.1 面向对象概述 面向对象是一种符合人类思维习惯的编程思想.现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系.在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象. 提到面向对象,自然会想到面向过程…
9.0 设计模式 在编写程序时经常会遇到一此典型的问题或需要完成某种特定需求,设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构编程风格,以及解决问题的思考方式. 设计模式就像是经典的棋谱.不同的棋局,使用不同的棋谐,免得自己再去思考和模索.本节将针对PHP应用程序中最常用的两种设计模式进行详细讲解. 9.1 单例模式 单例模式是PHP中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象. 就像世界上只有一个月亮,假设现在要设计一…
8.0  多态 在设计一个成员方法时,通常希望该方法具备一定的通用性.例如要实现一个动物叫的方法,由于每个动物的叫声是不同的,因此可以在方法中接收-个动物类型的参数的对象当传人猫类对象时就发出猫类的叫声,传人犬类对象时就发出犬类的叫声,这种向方法中传人不同的对象,方法执行效果各异的现象就是多态.为了让读者更好地拿握多态的用法,接下来通过一个案例来学习,如例8-22所示. 例8-22 <?php //定义Animal接口 abstract class Animal{ public abstract…
7.0 抽象类与接口 当定义一个类时,常常需要定义一些方法来描述该类的行为特征.但有时这些方法的实现方式是无法确定的,此时就可以使用抽象类和接口. 抽象类和接口用于提高程序的灵活性.抽象类是一种特殊的类,而接口又是一种待殊的抽象类. 接下来本节将针对抽象类和接口进行详细讲解. 7.1 抽象类 当在定义一个类的 时候,其中所霜的某些方法暂时并不能完全定义出来,而是让其继承的类来实现,此时就可以用到抽象类. 比如定又一个动物类,每种动物有一“叫” 的方法,面每种动物叫的方式不同,因此可以将动物类定义…
6.0 自动加载及魔术方法  6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项目中,这么做会产生大量的require或者include方法的使用.这样不仅会降低效率,并且使代码难以维护. 如果不小心忘记引入某个类的定又文件,PHP就会报告一个致命错误,导致整个应用程序崩溃. 为了解决上述问题,PHP提供了类的自动加载机制,即定义一个_ autoload()函数,它会在试图使用…
5.0 继承 5.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使许多事物之间形成一种关系体系 . 例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物.同理,波斯猫和田园猫继承自猫,而阿拉斯加和哈士奇继承自犬,这些动物之间会形成一个继承体系, 具体下图所示. 在PHP中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法. 在程序中,如果想…
4.0 类常量和静态成员 通过上几篇博客我们了解到,类在实例化对象时,该对象中的成员只被当前对象所有.如果希望在类中定义的成员被所有实例共享. 此时可以使用类常量或静态成员来实现,接下来将针对类常量和静态成员的相关知识进行详给讲解. 4.1 类常量 在类中,有些属性的值不能改变,并且希望被所有对象所共享,例如圆周率,它是个数学常数,在数学物理计算中广泛使用,此时可以将表示圆周率的成员属性定义为常量.类常量在定义时需要使用const关键字来申明.示例代码如下: const PI=3.1415926…
3.0 构造方法和析构方法 从我之前的博客可以发现,实例化一个类的对象后,如果要为这个对象的属性赋值,需要直接访问该对象的属性.如果想要在实例化对象的同时就为这个对象的属性进行赋值,则可以通过构造方法来实现.构造方法是类的一个特殊成员,它会在类实例化对象时自动调用,用于对类中的成员进行初始化.与构造方法对应的是析构方法,它在对象销毁之前被自动调用.用于完成清理工作.本节将针对构造方法和析构方法进行详细讲解. 3.1 构造方法  在每个类中,都有一个构查方法,在创建对象时会被自动调用.如果在类中没…