您的位置:首页 > 运维架构

OOP

2015-06-09 23:31 239 查看
类:属性及方法的集合。

特点:属性为方法服务。

语法格式:

class 类名{

public|protected|private $属性名称=值;

public|protected|private function 方法名称(参数,....){

;

return;

}

}

类的使用:

$ob=new 类名(构造函数传参数,.....);

类的外部调用属性

$ob->属性名称;

类的内部调用属性

$this->属性名称;

类的外部调用方法:

$ob->方法名称(参数1,......)

类的内部调用方法:

$this->方法名称(参数1,......)

例子数据库操作类:

方法:

连接数据库

执行sql语句

关闭数据库连接

构造函数:

执行的时间:类实例化对象完成后,自动调用

a) function __construct(参数,......){

方法体;

}

b) function 和类名同名函数(参数,......){

方法体;

}

特点:

1、在其他方法之前必须运行一次。

2、构造函数的返回值没有意义。

3、可见性必须为public

public 在类的内部可以调用,通过对象可以调用,可以被继承

protected 在类的内部可以调用,通过对象不能调用,可以被继承

private 在类的内部可以调用,通过对象不能调用,不能被继承

析构函数

执行时间:对象销毁之前,自动调用

语法格式:

function __destruct(){

方法体;

}

特点:

1、对象销毁之前自动调用,一次

2、没有参数

3、可见性必须为public

4、返回值,没有意义。

类的声明:

class 类名{

public|protected|private $属性名称;

public|protected|private function 方法名称(参数,...){

方法体;

}

}

实际编程过程中:

类的要干什么,分析方法

在方法编写过程中,有一个值,其他的方法也要用,声明一个属性

类的使用:

实例化对象

$ob=new 类名(参数,.....);

$ob->属性名称;

$ob->方法名称(参数,....);

$this->属性名称;

$this->方法(参数,.....);

构造方法

public function __construct(参数,....){

方法体;

}

析构方法

public function __destruct(){

方法体;

}

数据库操作类

文章管理类

留言板类

继承:一个类继承另一个的属性及方法。

作用:我们把公共的属性及方法放到父类中,子类继承就得到。

留言表:

create table cms_message(

id int(8) primary key auto_increment,

title varchar(50) not null,

content varchar(255) not null,

addtime int(11) default 0,

name varchar(10) null,

state tinyint(1) default 0,

tel varchar(50),

ip varchar(20)

)engine=innodb/myisam default charset=utf8;

留言板类:

方法:

列表(查询 分页)

留言总条数

发布留言

审核留言

删除留言

继承的语法格式:

class 子类的名称 extends 父类的名称{

属性

方法

}

特点:

1、把可见性为public protected 的属性及方法全部继承。

2、构造方法及析构方法可以被继承,继承后依然为构造方法。

3、继承的属性及方法可以被重写,可见性越来越强或等于原来的。

获取ip地址:

ip地址 $ip=$_server

发布时间 $addtime=time();

审核:(后台,管理员)

静态类:类中包含了 (静态方法) 或 (静态属性) 。

静态方法:

public|protected|private static function 方法名称(参数,....){

}

静态属性:

public|protected|private static $属性名称

特点:

静态属性,静态方法,属于类。

纯静态类中,构造方法,和析构方法不起作用

静态类中可以包含非静态方法及属性

静态方法中,不能使用 $this

类名::$属性|方法();

静态方法中不可用$this

数据库操作类,不适合用静态类。

验证码类,适合静态类

类常量 (属性)

cont 常量名称=值;

1、名称前没有$ const A=值;

2、一定有初,只能访问,不到修改。

什么时候用:

值固定不变。

参数值,放到常量中。

使用:

类名::常量名称;

魔术方法:

魔术:调用方式,由某件事情,启动。

function__construct;

function__destruct;

__call; 查询语句的子句

__set;

__get;

__clone;

当调用 一个没有定义的方法时,它自动运行。

function__call($a1,$a2)

{

var_dump($a1,$a2);

}

作用:

用来提示,屏蔽错误。

类的多态。(封装 继承 多态)

多态:一个同名方法 ,参数不同,运行结果不同。

__set;

作用:

屏蔽调用者,通过对象追加属性。

可以 把通过对象加的属性,放到数组中。

__get;

作用:

当通过对象调用 一个不。

__clone;

作用: 克隆变量

当一个对象被克隆时,__clone() 会自动执行

function __clone(){

}

单例模式

定义:程序运行中, 只有一个对象。

做到三点:

1、不能使用new实例化对象

2、对象不能克隆。

3、有下个静态该去,负责对象 实例化且只实例 化一个。

静态类:类中包含了静态方法或静态属性。

静态方法:

public|protected|private static function 方法名称(参数,....){

}

静态属性:

public|protected|private static $属性名称

特点:

静态属性,静态方法,属于类。

纯静态类中,构造方法,和析构方法不起作用

静态类中可以包含非静态方法及属性

静态方法中,不能使用 $this

类名::$属性|方法();

数据库操作类,不适合。

验证码类,适合静态类

方法:生成验证码

类常量(属性)

const 常量名称=值;

1、名称前没有$ const A=值;

2、一定有初值,只能访问,不能修改。

什么时候用:

值固定不变。

参数值,放到常量中。

使用:

类名::常量名称

验证码类 verify.class.php

类的自动加载

原理:有一个函数 __autoload(),这个函数,

当有new ,extends,静态方法访问,静态属性访问时,

自动执行。且能够把当前的类名,以参数的形式,传到函数体中。

使用:放在配置文件中。

留言板完善

1、写了配置文件,使用了自动加载

2、配置文件中,url地址的基地址

魔术方法

魔术:调用方式,由某件事情,启动。

function __construct()

function __destruct()

当调用一个没有定义的方法时,它自动运行

function __call($a1,$a2){

var_dump($a1,$a2);

}

作用:

用来提示,屏蔽错误。

类的多态(封装 继承 多态)

多态:一个同名方法,参数不同,运行结果不同。

class Test{

function fun1(){-

echo "123";

}

function fun1($a){

echo "456";

}

}

当给一个不存在的属性赋值时,__set自动调用

function __set($name,$value){

var_dump($name,$value);

}

作用:

1、屏蔽调用者,通过对象追加属性。

2、可以把通过对象追加的属性,放到数组中。

当通过对象调用一个不存在的属性时,get自动执行

function __get($name){

}

函数

作用:克隆变量

clone($arr)

当一个对象被克隆时,__clone() 会自动执行

function __clone(){

}

单例模式

$str=Preg_replace("/(\d+)-(\d+)-(\d+)/","$0/$2","1-2-3");

echo $str;

静态类

可见性 static $属性名=值;

可见性 static function 方法名称(参数,....){

}

内部:类名|self::$属性名称

类名::方法名称();

类常量

const 名称=值;

自动加载

function __autoload($className){

//类的加载

}

魔术方法

__construct()

__destruct()

__call()

__set()

__get()

__clone()

单例模式:

1、不能使用new实例化对象

2、不能被克隆

3、有一个静态方法能够只产生一个对象

知识点:

抽象类 *

定义:包含了抽象方法的类,是抽象类。

抽象方法:

定义:没有方法体的方法,为抽象方法。

特点:

1、如果一个类中包含抽象方法,一定是抽象类。

2、抽象类中,不一定有抽象方法。

这样的类,目的是控制只能继承,不能实例化对象。

Model.class.php

3、抽象类不能实例化对象,只能被继承。

4、抽象类中,可以有普通方法。

接口 *

接口里面的方法,都为抽象方法。

语法格式:

interface test{

function fun1();//每个方法默认可见性为public

function fun2($a,$b);

function fun3($c);

}

团队开发中,会使用。

总监

接口:

interface news{

作用:添加文章

param:array $arr=array('title'=>'aa',.....)

return:主键id值

author:li

function addNews($arr);

}

工程师:继承接口,封装响应类

class newsc implements news{

function addNews($arr){

$sql="";

return 1;

}

}

特点:

1、语法格式特殊:

interface 接口名{

//抽象方法,没有可见性,默认是public

}

2、不能实例化对象。

3、继承接口使用关键字 implements

4、可以多继承,和extends 不同。

抽象类接口的加载:

单独文件中,如何使用???

1、抽象类可自动被加载,只要遵循命名规则。

test_abstract.class.php newtest.class.php demo-1.php

2、接口也可以自动被加载,只要遵循命名规则。

test_interface.class.php testface.class.php demo-2.php

implements也会启动__autoload()

分页类 ***

分页实现流程:

1、获取总条数(分页类中,肯定会用)

select count(*) as num from 表名 where 条件

文章的分类 cId=3 获取标题中包含 a title like '%$k%'

2、确定每页条数(分页类,参数传值)

3、确定总页数(分页类的构造方法来做这个事情)

4、获取当前页码值(在分页类中,从get预定义变量中)

5、判断页码值的合法性(分页类的构造方法来做这个事情)

6、算出上一页,下一页的页码值(分页类)

7、算出开始位置值(($page-1)*$pageSize,分页类的一个方法)

8、拼sql语句(当前页要显示的记录)(不是分页类做的事情)

9、呈现列表

10、分页效果(分页类的一个方法)

Page.class.php

小方块分页效果:

前后各显示2个,

总页数不够2*2+1个

无条件全部显示

第一种:前面不够显示if($this->page<=2+1),后面补

从1 2 3 4 5

第二种:后面不够显示if($this->page+2>=$this->pageNum),前面补

从16 17 18 19 20

从 $this->pageNum-2*2

第三种:前后都够显示

当前页5 从3 4 5 6 7

从 $this->page-2 到 $this->page+2

oop面向对象编程:

类:属性及方法的集合

属性

普通属性

public|protected|private $属性名称=值;

静态属性

public|protected|privete static $属性名称=值;

常量

const 名称=值;

访问:

普通属性:

$this->属性名称 object->属性名称

静态属性:

self::$属性名称 类名::$属性名称

常量

self::名称 类名::名称

赋值:

普通属性:

$this->属性名称=值 object->属性名称=值

静态属性:

self::$属性名称=值 类名::$属性名称=值

方法

普通方法

public|protected|private function 方法名称(参数,...){

}

静态方法

public|protected|private static function 方法名称(参数,...){

}

抽象方法

public|protected abstract function 方法名称(参数,...);

魔术方法

__construct()

__destruct()

__call()

__set()

__get()

__clone()

继承:

作用:把一些类的公共属性及方法,放在父类中,子类去继承

语法格式:

class 子类名称 extends 父类名称{

}

自动加载

function __autoload($className){

require ROOT.$className.".class.php";

}

接口

抽象类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: