面向对象编程---笔记
机器语言:简单的二进制语言
二进制:
0000 加载;0001 存储;
汇编语言:用特定的符号代表的指令
Load 加载
store 存储
解决问题的过程:面向过程
对象:世界万物皆为对象,一切不可见的事物也是对象
对象组成:
1、元素部分:构成(相当于对象的数据模型,用于描述对象的数据信息,另称为对象的属性或者对象的成员变量)
2、行为部分:作用(对象的行为模型,用于描述对象可以做什么,又被称为对象的方法)
对象的特点:
1、每一个对象都是一个特定的事物,职能是完成特定的职能,每一个对象都是独一无二的,每一个对象都是可以重复使用的。
面向对象:
就是在编程的时候,始终把对象放在心上
普通方法需要对象来调用,需要绑定$this,普通方法必须要有对象,让对象来调用
静态方法不属于对象,因此不需要绑定$this,也就是说静态方法不需要对象也可以调用
面向对象的编程:
就是在编程的时候,数据结构都通过对象的形式(属性、方法)存储
为什么要学习面向对象:
1、对象的描述方式更加贴合真实的世界,有利于大型业务的理解
2、在程序设计的过程中,用对象的视角分析世界的时候,能够拉近程序设计和真实世界的距离。
面向对象的实质:
把生活中要解决的问题,都用对象的方式(属性、方法)进行存储。
面向对象的基本思路:
1、识别对象
2、识别对象的属性
3、识别对象的行为
面向对象的基本原则:
高内聚:
1、对象只负责一条特定的职能,这件职能可大可小
2、所有对象相关的内容,都封装到对象内部
低耦合:
1、外部世界只可以看到对象的一些属性,并非全部
2、外部世界可以看到对象可以做某些事情,并非全部
面向对象和面向过程的区别:
1、面向过程通过步骤来划分
2、面向对象是通过功能来划分
面向对象的优点:容易维护、开发效率高
类:
物以类聚,把具有相似特性的对象归类到一个类中。类,定义了这些相似对象,拥有着相同的属性和方法。类,是相似对象的描述,称为类的定义,类的对象成为类的一个实例,类的属性和方法统称为类的成员。
面向对象的三大特点
封装:把客观的事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象来操作,对不可信的进行信息隐藏
继承:子承父类,继承之后,上一个类的东西可以任意调用
1、父类中定义的类成员可以不用再子类中重复定义,节约了变成的时间和代价
2、同一个父类的子类,拥有相同的父类定义的类成员,因此外部调用他们的时候可以一视同仁
3、子类可以修改和调整父类定义的类成员,我们称之为重写,一旦子类重写了,就会按照重写后的执行
多态:对相同的行为做出不同的反应
成员变量就是实例化类的一部分,相当于对象的组成部分。
$this是PHP里面的伪变量表示对象自身,可以通过$this->的方式,来访问对象本身的属性和方法
类常量:
1、属于类自身,不属于对象实例,不能通过对象实例来访问
2、类常量不能用public、protected、private、static(访问控制)来访问。
3、子类可以重写父类中的常量、可以通过parent::的方式来调用父类中的常量。
4、常量的值只能是标量string、bool、int、float、nul
访问控制:
Public:共有的类成员可以在任何地方访问
Private:私有的类成员,只能被类自己本身访问
Protected:受保护的类成员,可以被自身和他的子类访问
接口:
就是把不同类的共同的行为进行了定义,然后在不同的类里面实现不同的功能interface,一旦某个类实现了某个接口,那么就必须实现接口中定义的方法。
某一个类继承类和继承接口的区别:
1、实现接口和继承类非常相似,但是接口不能直接创建自己的对象
2、继承的父类必须有该方法的实现,子类可以重写父类的方法也可以不重写
3、接口里面的方法不需要具体实现,只要定义了方法名称和参数就可以,具体的实现必须在实现类里定义。类的方法必须有实现,接口的方法必须为空。
抽象类:
任何一个类,如果它里面至少有一个方法是是被声明为抽象的,那么那就必须声明为抽象类,抽象类不能被实例化,被定义为抽象的方法,只是声明了他的调用方式,不能定义他具体的功能实现,继承一个抽象类的时候,子类必须定义父类中所有的抽象方法。
PHP设计模式:
工厂模式、单例模式、注册树模式、适配器模式、策略模式、数据对象映射形式、观察者模式、原型模式、装饰器模式、迭代器模式、代理模式
面向对象设计模式:
策略模式、工厂模式、单例模式、观察者模式。
观察者模式:当一个对象的状态发生了改变时,以来于他的对象全部会收到通知并且自动更新。观察者模式实现了低耦合、非侵入式的通知与更新机制
一个事件发生后要执行一连串的更新操作,传统的编程方式就是在事件的代码后面直接加入处理逻辑,当更新的逻辑增多之后,代码会变得难以维护,这种方式是耦合的,侵入式的,如果要增加新的逻辑需要修改事件主题的代码,所以观察者模式实现了低耦合,非侵入式的通知与更新机制
单例模式:
将构造函数声明成私有的形式、声明一个静态方法来实例化自己、声明一个私有的或者受保护的属性、判断当前的属性有没有调用成功、在设定好的工厂模式中调用单例方法。
策略模式:
将一组特定的行为和算法封装成类,以适应某些特定的上下文环境。
Smarty:
比较好的视图引擎
基于该引擎开发出的模板要更贴近标准的HTML、语法简单易懂、良好的缓存机制、扩展性良好、网络资源多
常见的视图引擎:
Smarty phpLIB
什么是smarty:
smarty是使用PHP写出来的模板引擎,是目前世界上最著名的PHP模板引擎之一,他分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML混在一起的PHP代码逻辑分离
smarty的特点:
1、速度快(相对于其他的模板引擎)
2、编译型(采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件)
3、缓存技术(它可以将用户最终看到了HTML文件缓存成一个静态的HTML文件)
4、插件技术(smarty可以自定义插件)
不适合smarty的地方:
正因为smarty缓存技术,使得它不太适合那些对实时性要求比较高的
Smarty 插件
Function 函数插件
Mondifiers 修饰插件
Block function 区块函数插件
1、引入主文件
2、实例化主文件的类
3、开启smarty配置
MVC:
M: modle 模型(数据处理)
V:view 视图(页面显示)
C:controller 控制层(业务逻辑)
C实现业务逻辑或者思路拿着C层的参数请求M层在M层做数据处理,将值返回C层,最后C层把数据显示到V层操作
入口文件: