一、面向对象知识总结
1.传统的过程式,优点上手容易,缺陷不满足要求代码就要重写,需求复杂,代码改变非常2.面向对象,分析属性行为。作用目的3.面向对象和过程式编程的区别4.面向对象特点封装:即隐藏,访问修饰符(public,protected可以被自己和扩展出来的对象访问,private)继承:关键字extends,私有属性和私有方法不能被继承,目的实现复用,特点是单继承,可以通过 parent:: 来访问被覆盖的方法或属性;被final终态类修饰的类不能被继承多态:变化的形态 重写,有继承关系的两个类之间,子类重新定义父类的方法,特点名字必须一样5.什么是抽象类,被abstract关键字修饰的类就是抽象类。特点,不能被实例化,要扩展子类去实例化,抽象类的方法必须全部实现抽象方法只有声明部分,没有实现部分,以;结束有抽象方法的类必须是抽象类,反之则错误6.接口,关键字interface,用implement去实现它;特点,实现它的所有方法,接口里只有常量和公共的方法;目的变相的实现多继承,接口是实现;面向对象:万事万物皆对象(使用类比的方式,对于事物进行归类处理);
关键字
1.class2.new3.this $this指当前类的对象4.访问父类,parent5.访问静态变量和常量,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_oncerequire
require_once二者的区别3.命名空间
什么是命名空间?一种封装的形式,解决名字重复问题。目的为了区分名字,命名空间扩展出来的可用别名关键字namespace,特点,必须在其他所有代码之前书写,可书写多个命名空间4.异常
异常是什么?exception/error意料之外try(throw) catch finally5.没讲的trait&取地址符号//传值,传递地址(对象传入的是地址)三、
mysql库==>访问 mysql数据库设计到的函数, mysql_connect mysql_select_db mysql_query mysql_fetch_row mysql_fetch_assoc mysql_fetch_array mysql_free_result mysql_closemysqli库==》访问mysql数据库
mysqli_init mysqli_options mysqli_real_connect mysqli_query mysqli_fetch_all mysqli_free_result mysqli_closepdo库==》通用于所有数据库 __construct $pdo->query/$pdo->exec $pdo->prepare $pdo==null PDOStatment===》 $ps->execute,$ps->fetchAll/$ps->fetchObject