面向对象,命名空间,pdo复习
一、面向对象知识总结
1.传统的过程式,优点上手容易,缺陷不满足要求代码就要重写,需求复杂,代码改变非常
2.面向对象,分析属性行为。作用目的
3.面向对象和过程式编程的区别
4.面向对象特点
封装:即隐藏,访问修饰符(public,protected可以被自己和扩展出来的对象访问,private)
继承:关键字extends,私有属性和私有方法不能被继承,目的实现复用,特点是单继承,可以通过 parent:: 来访问被覆盖的方法或属性;被final终态类修饰的类不能被继承
多态:变化的形态 重写,有继承关系的两个类之间,子类重新定义父类的方法,特点名字必须一样
5.什么是抽象类,被abstract关键字修饰的类就是抽象类。特点,不能被实例化,要扩展子类去实例化,抽象类的方法必须全部实现
抽象方法只有声明部分,没有实现部分,以;结束
有抽象方法的类必须是抽象类,反之则错误
6.接口,关键字interface,用implement去实现它;特点,实现它的所有方法,接口里只有常量和公共的方法;目的变相的实现多继承,接口是实现;
面向对象:万事万物皆对象(使用类比的方式,对于事物进行归类处理);
关键字
1.class
2.new
3.this $this指当前类的对象
4.访问父类,parent
5.访问静态变量和常量,self,可以访问当前类的资源
6.static 可以加访问修饰符
静态资源不用实例化对象就能进行访问;
在外部访问静态资源
访问静态变量的方式
类名::静态
对象名::静态
访问静态方法的方式
类名::静态
对象名::静态
对象名->静态
非静态类访问静态资源
访问静态变量的方式
类名::静态
对象名::静态
访问静态方法的方式
类名::静态
对象名::静态
对象名->静态
在静态方法中不能访问非静态资源,反之则可以,静态中不能用$this
7.const(修饰类中的常量)特点大写,必须给值,全局变量,不能加访问修饰符
不用实例化对象去访问
访问常量的方式
类名::常量
对象名::常量
8.final终态类 修饰类(不能被继承),修饰方法(不能被重写)
9.::范围解析操作符
二、延伸
1.魔术方法,什么是魔术方法?具有特殊功能的一套方法;特点 __大头,自动被调用,必须写在类里面
构造函数的特点,__construct,在当前类中完成初始化工作,创建对象时被自动调用,可以传入参数,可被继承,可用访问修饰符,被私有修饰不能创建对象
析构函数的特点,__destruct,当对象被显示消销毁时被调用,不可以传入参数,可用访问修饰符,被私有修饰不能被销毁,不能使用这种方式,要报错
重载属性
__get($name)
__set($name,$value)
proprty_exists
被访问修饰修饰报错 warning,要设置为公共的
__isset() empty()
__unset()
重载方法
__call()
__callStatic($name,$argumeents)
$name函数的名称,$arguments函数的参数值
特殊
public
__toString(){return "对象转换成字符串形式";}必须有一个返回值,用在把类当成字符串输出的时候被调用
__clone(){echo"对象被克隆了";}什么叫对象被克隆?什么时候执行?不能调用析构函数;private修饰,表示不能被克隆;
大部分只能公用,一些可以私有,构造和克隆
对象之间的比较
==值
===地址
2.类的自动加载
php文件越写越多,引入很多个文件,这样很麻烦。
传统方式__autoload()老版本会被淘汰掉,没办法扩展。
推荐用spl_autoload_register(),一次到位,加载队列,
两者的区别
include
include_once
require
require_once
二者的区别
3.命名空间
什么是命名空间?一种封装的形式,解决名字重复问题。目的为了区分名字,命名空间扩展出来的可用别名
关键字namespace,特点,必须在其他所有代码之前书写,可书写多个命名空间
4.异常
异常是什么?exception/error
意料之外
try(throw) catch finally
5.没讲的
trait
&取地址符号
//传值,传递地址(对象传入的是地址)
三、
mysql库==>访问 mysql数据库
设计到的函数,
mysql_connect
mysql_select_db
mysql_query
mysql_fetch_row
mysql_fetch_assoc
mysql_fetch_array
mysql_free_result
mysql_close
mysqli库==》访问mysql数据库
mysqli_init
mysqli_options
mysqli_real_connect
mysqli_query
mysqli_fetch_all
mysqli_free_result
mysqli_close
pdo库==》通用于所有数据库
__construct
$pdo->query/$pdo->exec
$pdo->prepare
$pdo==null
PDOStatment===》
$ps->execute,$ps->fetchAll/$ps->fetchObject