面向对象知识总结
--------php面向对象-----------------
oop 面向对象的编程
万物皆对象
对象有 属性和方法
具有相同属性和共同方法的一组对象叫做类
面向对象的编程
1.代码的封装性
2.重用性
3.代码的扩展性
4.代码的可维护性
5.具有共同属性和共同的方法的一组对象:类
类和对象
类是对象的抽象
对象是类的具体实现(实例)
代码实现面向对象的编程:
1、先定义类
class 类名{
//属性
public(访问修饰符) 属性名;
//方法
函数
}
规范:类名使用帕斯卡命名法
文件命名:类名+.class.php
2.通过类实例化对象
对象名 = new 类名();
访问属性
对象名->属性名=属性值
调用方法
对象名->方法()
构造函数
1.作用:初始化类的成员变量(属性)
2. 语法
public function __construct(
n
a
m
e
,
_name,
name,_sex,
a
g
e
,
_age,
age,_hoddy)
{
在类的内部来访问自身
this代表当前对象
$this->name=$_name;
$this->sex=$_sex;
$this->age=$_age;
$this->hoddy=$_hoddy;
}
默认有一个无参的构造函数
实例化对象的时候都会自动调用构成函数
3.魔术方法
- 当访问的属性不存在,自动调用__get方法
public function __get($name){
}
2.赋值的时候属性不存在的时候
public function __set($name, $value)
{
echo $name."真的不存在";
}
3.
function __autoload($name){
$file=$name.".class.php";
require $file;
}帮我们在使用类的时候自动加载
4.类当中的public (访问修饰符)
公共:在类的内部和外部都可以被访问到
作用:可以控制访问权限
public公共的-在类的内部和外部都可以被访问到
5.类当中的private(私有的)
私有:只能在类中被访问到
6.static 静态的-直接使用类名来访问 类名::属性或者方法
在类的内部访问静态成员 用self::
7. protected:受保护的 在类的内部和子类可以访问
---------------------------------------------------------继承--------------------------------------------------------------------------
8.
子类继承父类的非私有成员,实现代码的重用性,和扩展性
class 子类 extends 父类{
}
9.调用父类成员
parent::
10.
重写
子类定义和父类相同的成员,子类会覆盖父类的成员
12.继承的特性
单根性(一个子类只能继承一个父类)
传递性(c extends b b extends a)
-----------------------------------------------------面向对象的三大特性--------------------------------------------------------------------
1、封装 不关心内部的细节实现
2、继承 实现代码的重用和扩展,子类继承父类的非私有成员
3、多态
1.同一个类在不同的环境表现出不同的状态
2.不同的对象调用同一个方法表现不同的状态
---------------------------------------------------面向对象数据库查询------------------------------------------------------------------------
-------------------------------------------------面向对象抽象类----------------------------------------------------------------------------
public abstract function
父级有抽象方法子级一定要实现,或者子级都使用一个共同的方法。但用法不同
抽象类只能被实现,不能被实例化(不能被new),不能创建对象
只能被子类继承
抽象方法没有具体实现,由子类去实现,子类必须实现
抽象方法必须定义在抽象类中
什么情况下定义抽象方法
子类都具有的共同方法,但是每个子类的具体实现不同
抽象类不一定有抽象方法
子类必须要实现抽象类的抽象方法,除非子类也是抽象类
抽象类抽象方法可以使不同的对象具有相同的方法 但方法表现出来的行为不统一
抽象类抽象方法可以实现多态
$COM=new 类名;
当 构造函数无参的时候,小括号可以省略
类名和方法名不区分大小写
-------------------------------------------接口---------------------------------------------------------------------------------------------
接口: 是对继承单根性的扩展
约束子类的行为
子类只能继承一个父类但可以继承多个接口
接口语法:interface I(以大写的I开头)接口名
{
可以定义常量 define(“PI”)
常量还有一种常量方法 const PI
function 函数名();
}
接口可以定义常量和函数,但都不能有具体的实现
而且不能写访问修饰符,因为接口中的成员都是隐式公开(public)
class 子类 extends 父类 impements 接口1,接口2…
{
}
__call() 当调用的方法不存在时,自动调用__call方法
final 最终的 不能被继承,子类不能重写
DBhelper
1、建立数据库的链接
2、增删改查
2.1 select * / 列名 from 表名
inner join表名 on 链接条件
where 查询条件
order by 列名
$fileds 字段(列名)
$tablename 表名
$join 连接的表名和链接条件
$where 查询条件
$orderby 排序的列名 asc/desc
$limit 开始,行数
2.2 delete from where 删除条件
2.3 update 表名set 列名
public function setfileds($arr){
foreach ($arr as $k=>$v){
$this->filedlist.="$k='$v',";
}
$this->filedlist=substr($this->filedlist,0,strlen($this->filedlist)-1);
}
spl_autoload_register 当类找不到 自动加载类所在文件