PHP面向对象知识总结

来源:互联网 发布:2015双11淘宝交易额 编辑:程序博客网 时间:2024/05/09 20:04


什么是面向对象?

概念:认识或认知事物的一种方式====》类比;
 
  对象是类进行实例化后的结果

 Object====》物质、物体

 类====》属性和行为
   (默认情况下的是缺少了该属性或行为则类别就无法确定)

 扩展的附加行为====》接口


this / parent(后面跟预作用符) / self(自身的意思,调用类自身,常量,与this相对立的)


一、面向对象的三大特征

1.封装:(所有函数和类都是封装)
 封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐藏对象的内部细节。
 优点: 信息隐蔽,封装即隐藏(目的:不能让别人随意修改信息)。
 
 怎么实现封装? 

   (1.访问修饰符(public、protected、private)

   (2.类
   (3.函数方法

   (4.文件

   (5.文件夹 


2.继承:传承
 
 继承:  扩展父类的内容,注意只能继承public和protected修饰的内容,而private修饰的则不能继承

 关键字: extends

 PHP中继承是单继承,即extends后面只能有1个类名;但是1个类可以有无数个子类

   子类和父类只能出现在有继承关系的2个类之间

   parent指代的是调用的父类的函数方法

   被final修饰的类不能被继承


 访问修饰符:
 
    public         公共的       谁都可以用,也可以修改

    protected   受保护的    只有自己和后代可以使用和修改

    private       私有的        只有自己可以使用和修改

3.多态:变态--变化的形态

(4.抽象)

二、
OOA:分析

OOD: 设计

OOP:编程

三、重写

 在子类中出现和父类同名的方法,这个称为重写

     行为的重新定义

     重写只能发生在有继承关系的类之间,方法名称相同即重写,与参数没有关系

     重写时,访问修饰符的可以访问的范围不能低于父类中的访问修饰符

     对于private修饰的方法不能重写

四、接口(接口插件 [ 提供行为的规范 ] )

      接口( interface )是 抽象方法 和 静态常量 定义的集合。

      接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。

      接口中没有其它类型的内容。
 
       在接口中的抽象方法只能是public的,默认也是public权限。并且不能设置成private或者protected 类型。


 名称是interface,在接口定义的只能是公共的抽象方法(没有函数体部分),也可以有静态常量;

 接口采用插件式配置,可以任意的匹配给任意一个类;类可以实现(implements)接口,类实现的接口可以有无数个;

 当一个类实现了接口之后,该接口的所有的方法必须在该类中实现;

五、
   输出当前文件路径

    echo __FILE__;

    echo __DIR__;

 echo strlen(__DIR__);

   获取当前文件名

 echo substr(__FILE__,strlen(__DIR__)+1);

六、关键字 final(最终的)和 static(静态的)

 final:
 
 关键字,意思是终态的,最后的

 它可以修饰  函数方法(行为) ,被修饰的函数方法(行为)不能被重写

 final可以修饰  类class,但是被修饰的类不能被继承

 类当中的属性不能被final修饰

 static:

 关键字,意思是静态的

 它可以修饰  属性变量 ,也可以修饰  函数方法(行为)

 静态资源加载和普通的非静态的资源加载是不一样的

 在非静态方法中可以调用静态方法,但是反过来就不行

 静态static修饰的内容被创建不需要有对象存在,同时它们是被放置在静态区当中

 静态资源的标准访问方式是====> 类名::静态资源名称

七、函数方法 method_exists()和call_user_func()
 
 method_exists():检查类的方法是否存在于指定的 object中;

 call_user_func():把第一个参数作为回调函数(callback),并且将其余的参数作为回调函数的参数

八、include()和require()引入文件

 include():如果没有对应文件,只会发出错误警告而后面的代码会继续执行;
 
 require():如果没有对应的文件,会发出错误警告,后面的代码不会被执行;

九、魔术方法:

 什么是魔术方法? : 所有以 __(两个下划线)开头的类方法保留为魔术方法;

 魔术方法有(15个):

 __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(),

  __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 。

 分别:
  get():
   
  set():受保护的
 
 
十、其他


 property_exists — 检查对象或类是否具有该属性(某个类中是否包含某个属性名称);


十一、
 函数方法的访问:__call() 和  __callStatic();

调用静态方法 forward_static_call()


十二、

 serialize — 产生一个可存储的值的表示;
 
 __sleep() 方法常用于提交未提交的数据,或类似的清理操作;
 
 __invoke() 当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用;
 
 __set_state()调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
 
 __clone()克隆对象
 
 __isset()检测一个对象的属性是否存在时被调用
 
 __unset() unset一个对象的属性时被调用
 
 __autoload()实例化一个对象时,如果对应的类不存在,则该方法被调用
 
 __debugInfo()
 

十三、异常信息处理 


    用@屏蔽掉;

    error_reporting函数和配置;
    display errors 设置为 off

异常(Exception)即错误;
 
 分为两大类:编辑时异常、运行时异常;
 

十四、复习回忆php操作数据库

 php操作mysql数据库的步骤:

    mysql_connect() 建立数据库连接

   mysql_select_db() 选择操作的数据库

   mysql_query() 执行SQL语句

   mysql_fetch_array() 返回一行记录(数组)

   mysql_num_rows() 返回结果集中行的数目

   mysql_close() 关闭数据库

 创建数据库连接的函数?参数有几个?每个参数代表什么含义?

  mysql_connect() 建立数据库连接

  参数共计5个:

   第一个参数:服务器名称或者地址,同时可以加上端口号(如果是默认的3306,则可以省略);

   第二个参数:登录的用户名;

   第三个参数:登录密码;

   第四个参数:是否使用可能重名的相同连接对象(如果该对象已经创建),默认为false;

   第五个参数:常量组合,设置连接的模式,默认值为0;

   (连接成功,返回结果为资源类型;如果失败,报错并且返回false)

十五、PDO

PDO====》php data object(php数据对象)

 PDO类

 PDOStatement 类

 new PDO(‘数据库连接访问字符串’,‘登录用户名’,‘登录的密码’,‘访问的相关参数’)
 mysql:databasename=test;port=3306;host=localhost;charset=utf8

 exec($sql)  ===> int类型

 query($sql)  ===> PDOStatement对象

 prepare($sql)  ===> PDOStatement对象

 fetch  默认返回数组

 fetchAll 返回二维数组

 fetchObject 返回对象

 execute — 执行一条预处理语句(参数是数组形)


什么是PDO:接口  一套访问数据库的标准
 
 PDO(工具类,产生对象):php数据对象(PDO),扩展为php访问数据库定义了一个轻量级的一致接口。


可以执行SQL语句
 
 执行sql语句的方法:

        $pdo->exec(); //执行一条sql语句,update,delete,insert等写操作,返回受影响的行,。

        $pdo->query(); //执行有结果集的语句,select等读操作,返回一个PDOStatement对象。

        $pdo->prepare(); //执行所有语句,与PDOStatement对象一起使用,返回一个PDOStatement对象(减少服务器端执行的时间)。

 
     PDOStatement类:代表一条预处理语句,并在该语句被执行后代表一个相关的结果集 
 
    PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组(二维数组)     //获取所有记录

 
    fetchAll — 返回一个包含结果集中所有行的数组(二维数组)     //获取所有记录 

    fetchObject():获取下一行并作为一个对象返回




0 0
原创粉丝点击