«

php面向对象

时间:2023-3-1 22:04     作者:wen     分类: PHP


面向对象:  
编程的思想:  
1 什么是面向对象 
  对现实世界的理解和抽象   的方法,一切事物(具体,概念,思想...)都是对象
  现实世界中 ---》 代码 抽象成 类 封装 继承.. 方便于人们对现实世界进行抽象和数字建模

  面向对象的3大特征:
   封装,保护起来 
    多态,多种状态 ---》 共同前提(活着) --》人活得方式不同(多态)
    继承,父类--》子类拥有

2 面向对象 4个概念:
   类: 抽象,一种事物的集合,(具有相同的属性和方法)
    属性: 事物的特性, 与生俱来能用"有".
    方法: 定义功能  用"能"形容
    对象
封装关键词:属性和方法 隐藏起来,不能随便调用和更改,保护代码作用
                           类内部             类外部                 子类
  1  public 公共           可以               可以                    可以     
  2  protected受保护       可以               不可以                  可以
  3  private 私有           可以              不可以                 不可以

     注意 :修饰词  function    public(默认不写) function  protected fucntion private function               

       封装时候,封装等级,子类 <= 父类级别           

私有成员 等级严格 ,类内 可用。
    private $name; ---> public   protected 直接修改封装关键词
两个_   
注意:改变private的访问范围  
__set($n,$v) 对私有属性进行复制
__get($n) 对私有属性取值

执行函数的时候 自动调用以下两个方法  
__isset() 检查私有属性是否存在的
__unset() 删除私有属性调用 

isset() 函数 可以判断变量是否存在,判断不了属性

开发: 零散 知识点,带入项目,用到实际中

类中常用的关键字:
    final 最终
    self  自己
    static 静态
    const 常量

final  修饰类 方法,属性不能修饰
   final 不能被继承
   final 不能被覆盖

static self
    static 静态成员: 修饰属性和方法  不能修饰类
           static属性属于类 ,与对象无关

    类外部 调用static 成员:
        类名称::成员  不需要实例化 ******
     类内部: ******
            类名称::成员 
     self::成员   

const 常量  类中常量:
    类外部:define("常量名称",value)
 常量定义: 常量名称全大写,给默认值,常量名称不需要$*****
   类内部
            类名称::成员 
     self::成员
 类外部:
            类名称::成员 

魔术方法
    __construct() //构造函数
    __destruct()  //析构函数
    __get($n)     //获取私有属性
    __set($n,$v)  //设置私有属性
    __isset($n)   //检查属性
    __unset($n)   //删除属性
    __call($fun,$arr) //对象调用了不存在的方法,系统报错,自动调用call 
    __toString()  //对象转化成字符串时候 调用
    __clone()     //当对象被克隆时,将会自动调用 
    __sleep()     //在序列化的时候 自动调用   序列化对象
    __wakeup()    //在序列化的时候 自动调用  反序列化对象
    __autoload()  //自动加载类

序列化
  serialize()     产生一个可存储的值的表示 
  unserialize()   从已存储的表示中创建 PHP 的值 
抽象方法
    抽象方法 没有 方法体,只能在继承中 被覆盖,在子类中,可以正常调用父类中的普通方法
    抽象类: 至少有一个抽象方法的类,(可以有普通方法)  
    注意:在抽象类,虽然你只是实现部分方法,其他方法都要重写一下
接口:interface
  成员属性都是常量,成员方法都是抽象方法
接口和抽象类 区别: 面试题:
抽象类:
    类中至少有一个抽象方法,可以有普通方法
  abstract class 类名称   
    继承****

接口:
    类中全是抽象方法,不能有普通方法    
 interface 接口名称   
   接口中属性都是public 而且都是常量
   引用 *****
共同点:  都不能被实例化 ,而且所有的方法都必须被重写(覆盖)
定义接口:
    interface 接口名称{
        const NAME="张三"; //属性不需要添加 public 默认就是public
        function demo(); //方法默认都是 abstract  abstract 可以省略
        function demo1();
        function demo2();
    }    

接口的引用:
    implements 引用关键词
    注意:继承单一继承,接口是可以多引用
    继承 和 接口如果同时存在    先继承 后引用*****

实用:
    接口和抽象类 作用 定义项目规则 ,提倡使用接口:
设计模式:
   static: 修饰属性和方法,   静态属性和 静态方法

   static 声明的属性和方法,不属于对象,属于类,类属性和类方法
   static 使用:
            类名称::属性、方法  ---》 不需要实例化

   static 属性和方法,内存中只有一个空间,被所有对象共用的 
1. 什么是设计模式:

 程序:一套被反复使用,经过分类,代码设计经验的总结   
  优势:
    1.效率高
    2.安全性
    3.促进分工,协作

 设计模式: 23种 
 1. 单例 模式
 2. 工厂模式
单例模式:
    只创建一个对象(实例),其他所有的对象都指想该对象的内存空间
运行机制:*****    
  1.定义一个属性---》 static  存放对象               $obj = new...  
  2.不能再类外实例化
  3.当前类对象---》 在本类的一个 static 方法(public)中创建

 工厂模式:
   工厂模式:通过一个类,产生其他类对象 

    用同义的方式创建各种对象

 应用范围:
    用在类调用比较多的页面上
 优势:
    所有对象的创建,都采用统一的模式 
    便于代码和方法的管理       

作用:
    数据库操作类--》单例模式 
 关键词  const final self static 

标签: PHP基础