• 静态、抽象类、加载类、魔术方法等


    静态  static关键字

    普通成员
    普通成员是属于对象的

    静态成员
    静态成员是属于类的

    普通方法里面可以调用静态成员
    静态方法里面不能调用普通成员
    self关键字 在类里面代表该类

    普通类
    class Ren
    
    {
      public $name="张三";
      public static $zhongzu; //静态成员
    
      普通方法
      function Say()
      {
        echo self::$zhongzu."你好";
      }
    静态类
    static function Run()
    {
      echo $this->name;
    }
    
    Ren::$zhongzu = "民族";
    Ren::Run();
    
    $r = new Ren();
    $r->Say();
    class myclass
    {
        static $count;//声明一个静态变量,用来统计对象创建的次数
        function __construct()//声明一个静态方法,在类外面直接使用类名就可以调用
        {
          self::$count++;//在方法中使用self访问静态成员并返回    
        }
        static function getcount()//声明一个静态方法,在类外面直接使用类名就可以调用
        {
          return self::$count;    //在方法中使用self 访问静态成员并返回
        }    
    }
    myclass
    ::$count=0;//在类外面使用类名访问类中的静态成员,为其初始化赋值 $myc1=new myclass();//创建第一个 $myc2=new myclass();//创建第二个 $myc3=new myclass();//创建第三个 echo myclass::getcount()."<br>";//输出3 echo $myc3->getcount();//输出3

    抽象类 abstract 关键字

    不能被实例化
    做为父类使用

    abstract class YunSuan//定义一个抽象类
    {
      public $a;
      public $b;
    
      function Suan()
      {
      }
    }
    
    class Jia extends YunSuan//定义一个jia类继承与上边的抽象类
    {
      function Suan()
      {
        return $this->a+$this->b;
      }
    }
    
    class Jian extends YunSuan//定义一个jian类继承与上边的抽象类
    { 
    
      function Suan() 
      { 
        return $this->a-$this->b; 
      } 
    } 
    
    class Cheng extends YunSuan//定义一个jian类继承与上边的抽象类
    
    {
       function Suan()
      { 
        return $this->a*$this->b;
      } 
    } 
    
    $jia = new jia();
    $jia->a=10; 
    $jia->b=5;
    echo $jia->Suan();
    $jian = new jian(); $jian->a=10; $jian->b=5; echo $jia->Suan(); $cheng = new cheng (); $cheng->a=10; $cheng->b=5;
    echo $cheng->Suan();

    接口  关键词 interface     implements
    极度抽象的类
    接口里面的方法主要是用来控制子类必须实现该类里面所有方法

    interface IUSB
    {    
      function Read(); //接口里面只声明函数名
      function Write(); 
    }
    
    class ShuBiao implements IUSB
    {
      function Read()
      {
        echo "鼠标插上了";
      }
      function Write()
      {
        echo "给鼠标传了数据";
      }
    }
    
    $s = new ShuBiao();
    $s->Read();

    加载类

    include("./Ren.class.php");//"./"
    include "./Ren.class.php";
    
    require("./Ren.class.php");
    require "./Ren.class.php";
    
    require_once("./Ren.class.php");
    require_once "./Ren.class.php";

    自动加载类
    1.所有的类文件要放在同一个文件夹下
    2.所有类文件的命名规则要一致
    3.所有类文件的名字要和类名保持一致

    function __autoload($classname)
    {
      require "./libs/".$classname.".class.php";
    }
    
    $r = new Ren();
    var_dump($r);
    
    $d = new cat();

    克隆对象 关键字clone

    class Ren
    {
      public $name;
    
      function Run()
      {
        echo "跑";
      }
    
      function __tostring()
      {
        return "name变量代表的是人员名称,Run方法是一个跑的方法";
      }
    
      //克隆对象的时候自动调用的方法
      function __clone()
      {
        $this->name = "李四";//克隆之后给name赋新值
      }
    }
    
    $r = new Ren();
    $r->name = "张三";
    
    $r1 = clone $r;//克隆的语法
    var_dump($r1);
    var_dump($r);*/

    魔术方法

    构造函数,对类里面成员进行初始化

    function __construct()
    {
    }

    析构函数,在对象释放的时候自动执行

    function __destruct()
    {
    }

    __set方法

    function __set($name,$value)
    {
    }

    __get方法

    function __get($name)
    {
    }

    __tostring()方法

    function __tostring()
    {
    }

    __clone方法

    function __clone()
    {
    }

    __autoload方法

    function __autoload($classname)
    {
    }

    __tostring()能够直接输出对象

    class Ren
    {
      public $name;
    
      function Run()
      {
        echo "跑";
      }
    
      function __tostring()//不加这个方法,是不能直接输出所造对象的,在类中添加此方法,可以直接输出对象
      {
        return "name变量代表的是人员名称,Run方法是一个跑的方法";
      }
    }
    
    $r = new Ren();
    echo $r;

    关键字

    1.class 定义类

    2.访问修饰符 public  protected  private
    3.new 造对象的关键字
    4.$this 代表该对象本身
    5.extends 代表继承
    6.parent 代表父类
    7.static 代表静态
    8.self 代表该类
    9.abstract 代表抽象,定义抽象类
    10.interface 代表接口,用来定义接口
    11.implements 实现接口
    12.clone 代表克隆
    13.override 重写
    14.overload 重载
    15.oop 代表面向对象
    16.final 写在定义类前面的,将该类定义为最终类,则该类不能被继承

  • 相关阅读:
    php读取大文件如日志文件
    大型站点高并发架构技术
    Nginx配置文件nginx.conf详细说明文档
    关于PHP高并发抢购系统设计
    Mysql常用的锁机制
    Sping基础
    Reliable Master持续集成环境搭建Centos
    Win7 macaca自动化环境搭建 PC篇
    安卓appium无线调试
    Selenium PageFactory使用
  • 原文地址:https://www.cnblogs.com/binbinyouli123/p/6561943.html
Copyright © 2020-2023  润新知