• php 之 类,对象


    --恢复内容结束---

    一、类和对象:

    1.定义:

      对象:我们所见到的东西都可以称之为对象,是类实例化出来的东西

      类:是对所有的同类对象抽象出来的东西

      eg: 在一张表中记录了全班同学的学号,姓名,性别等信息,这张表可以称为类,而每个学生的具体信息则是对象。

    2. 定义类:

      class 类名称   //这里一般默认类的名称首字母大写

      {

          成员变量;

          成员函数

      }

     eg:  class Ren

           {

              var $name;   //成员变量,一般不要赋值

              var $age;

              var $height;

              var $sex;

              function Run()  //成员函数,又叫成员方法,是来完成对象的一些行为

                {

          echo "这个人正在奔跑";

         }

           }

    3. 使用类:

      3.1 实例化对象:

           $r = new Ren()

      3.2 给成员变量赋值,调用成员变量

          $r->name='张三';    //给对象name赋值

          $r->name;    //调取name的值

    4. 调用成员方法:

       $r->Run();   //执行成员方法

    5. 访问修饰符:

      种类:1. public  公有的。

              2. protected  受保护的。只能在这个累和他的子类里使用

              3. private  私有的。只能在这个类里使用,他的子类也无法使用

      注意:a.   如果加访问修饰符,要去掉var

               eg:

             class Ren

             {

              public  $name;   //成员变量,一般不要赋值

              protected $age;

              private  $height;

              var $sex;

             }

             echo $r->$name;

       echo $r->$age;

         echo $r->$height;

       echo $r->$sex;

             这时的$name $sex 可以调用,$age,$height 是无法调用的.

             因为对象不属于类,类只能在{}内使用

             b.  如果不加访问修饰符,默认是公有的

    6. $this引用

        $this 代表该对象(哪个对象调用代表哪个),不是代表类。专门用来完成对象内部成员之间的访问。

       

         class Ren

           {

              var $name;   

              var $age;

              var $height;

              var $sex;

           

             function Run() 

                {

          echo "这个人正在奔跑";

         }

              function Say()  

                {

          echo  $this->name."在说话";  //在方法Say()中,使用$this 访问name

                     $this->Run();   //也可以在Say()中调用另一个方法 Run()

         }

           }

    $r=new Ren();

    $r->name="张三";

    $r->Say();

    输出结果为:

    7. 构造函数/构造方法:

       1.写法特殊:写法固定不变   function __construct()

                        function后加空格和两个下划线

       2. 执行特殊:在造对象时直接执行,无需调用

       3. 作用:对对象执行初始化操作

       

    class Ren
    {
    public $Name;//成员变量,一般不要赋值
    protected $age;
    private $height;
    var $sex;

    function __construct($s)         //构造函数,原来的还在执行,可以添加自己的东西
    {
         $this->sex=$a;                     //初始化sex的值
    }


    }

    $r=new Ren("男");

    echo $r->sex="女";

    输出结果为:女

     8. 析构函数:

      在对象销毁前执行

    function __destruct()
    {

      echo "该对象销毁了!";
    }

    9. 面向对象的三大特征:封装性,继承性,多态性

    封装性:

      9.1 目的:让类更加安全,不让外界直接访问类里面的成员变量

      9.2 做法:1.把成员变量做成私有的,private 

                        2. 做一个方法来实现变量的取值或赋值,在方法里加限制条件 SetAge,GetAge

    class Ren
    {
      private $Name;
      private $age;
      private $sex;

    function __destruct($s) 
    {
      echo $this->sex=$a;
    }

    function SetAge($a)

    {
      if($a>10 && $a<50)
      {
        echo $this->age =$a;
      }
    }

    function GetAge()
    {
      return $this->age;
    }

      9.3 SetAge和GetAge 

    function SetAge($a)      //给age赋值的函数
    {
      if($a>10 && $a<50)
        {
        echo $this->age =$a;
         }
    }

    $r=new Ren();
    $r->SetAge(40);//输出结果为40
    $r->SetAge(100);//超出条件限制,无结果

    function GetAge()         //取age的值
    {
      return $this->age;
    }

    echo $r->GetAge="30";//输出结果为30,也可以用 echo $r->GetAge=(30);

      9.4 使用类里面提供的魔术方法,也可以实现对私有成员的操作

    1.function __set()

    {

    }

    eg:

    function __set($name,$value)  //对类累里面的私有成员进行赋值,设置参数
    {
      if($name=="age")
      {
        //$this->变量名=$value;
        if($value>20 && $value<50)
        {
          echo $this->$name=$value;
        }

      }
      else
      {
        echo $this->$name=$value;
      }

    }

    $r->__set("name","张三"); //调用function __set()赋值
    $r->$name="张三"; //执行该语句会自动调用__set方法

    eg:

    //$r->name="李四";
    //$r->age="40";
    //$r->sex="女";

    特点::1.自动执行

               2.把赋值语句中的变量名作为第一个参数,把变量值作为第二个参数调用__set()方法

    2.function __get()

    {

    }

    eg:

    function __get($name)   //对类累里面的私有成员进行取值,设置参数
    {
      return $this->$name;
    }

    特点:会自动执行,把取值语句中的变量名作为参数调用__get()方法

    eg:

    $r->name="张三";
    $r->sex="男";

  • 相关阅读:
    TortoiseGit日常使用指南
    Ajax在MVC中的应用
    STL源码学习内存管理
    功能最强大的.Net代码生成器——EasyCode
    TortoiseGit使用入门
    负载均衡时数据包流程详解
    C++异步编程 for VS2011
    (译)一个通用快速的反射方法调用
    移位运算
    使用Autofac在ASP.NET Web API上实现依赖注入
  • 原文地址:https://www.cnblogs.com/ds-3579/p/5434487.html
Copyright © 2020-2023  润新知