面向对象编程OOP
目标:重用性、灵活性、扩展性特点:封装、继承、多态类的书写方法:
class PersionName{ }特征:属性。其实就是变量
行为:方法。其实就是函数 1.实例化对象2.对象中成员的访问3.特殊的对象引用$this4.构造方法和析构方法魔术方法:
__construct() //构造方法__destruct() //析构方法 __toString() //对象链:
$obj->a()->b();//a里面应该return $this;属性的作用域:
1.在类体内都可以使用2.局部变量的使用类方法传参:
$obj->say('yujie');全局变量、局部变量、对象属性、超全局变量的作用范围
全局变量:整个页面都可以使用,函数里要用全局变量必须加global
局部变量:函数内部使用对象属性:在整个为类中使用,包括子类和父类超全局变量:页面的任何地方都能使用类的继承特性:
class It extends Person{}parent::abc();与类有关的测试函数:
1.获取对象的类get_class();2.获取对象的父类get_parent_class();3.获取类的属性get_class_vars();4.获取对象的属性get_object_vars();5.获取类和对象的方法get_class_methods();6.对象或类中是否含有say方法method_exists("Person","say");7.对象或类中是否含有name属性property_exists("Person","name");8.测试对象是否属于某个类$p1 instanceof person9.是否是对象is_object();10.测试类是否存在class_exists();11.测试接口是否存在interface_exists();分页类:
1.需要赋初值的东西全放到__construct()2.public属性能赋值初值,不能参与任何运算3.运算顺序4.类中只有方法能调用并执行封装:
private function start(){}三个修饰词:
public //子类和外部都可以使用protected //子类可以使用private //本类可以使用抽象类: //含有抽象方法的类叫抽象类
abstract class prc(){}接口: //只含有抽象方法的类叫接口interface Usb{}多态: //通过一个函数去加工不同形态的类对象
魔术方法:
1.__construct2.__destruct3.__call4.__get5.__set6.__isset7.__unset8.__toString9.__clone自动加载:
__autoloadfunction __autoload($classname){
include($classname.".class.php");}$user = new Model("user");关键字:
1.const类常量可以修饰属性const HOST='localhost';类外面:Model::HOST;类里面:self::HOST;2.static静态变量可以修饰属性和方法static $objs=0;类外面:Model::$objs;类里面:self::$objs;3.final 无法覆盖修饰类和方法最终版本 PDO数据库抽象层:1.pdo类2.pdo预处理类3.pdo异常处理类mysql数据库支持:预处理和事务机制
生成PDO数据库连接对象
$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");设置操作字符集$pdo -> exec("set names utf8");设置从结果集预处理对象中获取数据的默认数组类型$pdo -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);执行增删改操作:
exec()执行查找操作
query()获得最后一次插入的ID
lastInsertId()设置结果集预处理对象中获取数据的默认数组类型:
setAttribute()查看结果集预处理对象中获取数据的默认数组类型:
getAttribute()PDO::ATTR_ERRMODE(pdo报错模式)
PDO::ERRMODE_SILENTPDO::ERRMODE_WARNINGPDO::ERRMODE_EXCEPTIONPDO::ATTR_DEFAULT_FETCH_MODE(PDO获取模式):
PDO::FETCH_NUMPDO::FETCH_ASSOCPDO::FETCH_BOTH异常处理警报:
1.getMessage();2.getFile();3.getLine(); 事务机制:1.myisam不支持2.InnoDB支持预处理机制:
1.预先准备sql发送到服务器上$obj = $pdo -> prepare($sql);2.改预处理语句绑值,并设置绑定值类型$obj -> bindValue(1,0,PDO::PARAM_INT);3.执行这条语句$obj -> execute();