• 面向对象【修饰符,析构,封装,静态等】


      对象,在php中,一切皆对象

      类,是众多对象抽象出来的,

      对象,是由类实例化出来的。

     。定义 类

     。class 类名

        {var $name 成员变量,用var定义,也可以用修饰符代替var定义

          var $age 成员变量

          function eat(){} 成员方法,描述类的方法

          function 类名(){} 构造函数,即使不写也会一直存在,PHP一般用 function __construct(){} 写(注,两个下划线),在造对象的时候执行,

         }

        。抽象的东西不能直接拿来使用,要先实例化

         实例化

         $r=new (类名); 先新建一个实例化的人

         $r->name="张三" 调用成员变量

         $r-> age=1 调用成员变量
         $r->eat() 调用成员方法

       。访问修饰符

         public 共用的 成员变量的var被public替换 成员变量前边加上public就可以变成公用的

         protected 受保护的 只能在该类或者该类的子类里边访问

         private 私有的 只能在该类访问。 成员变量一般都是私有的,成员方法一般都会公用的。

         在private的时候使用 $this->name 调用成员变量name this代表该对象即谁过来调用就是谁。

       。析构函数

         function __destruct(){ } 在对象函数销毁时执行,不能给代码,他也是一个自动调用函数

         函数重载 是一种编译多态,(php中没有,一般在强类型语言里面)
          public void Text(string s){echo “111”}

         定于关键词 返回值 名称 类型 输出的数据

          public void Text(string s){echo “111”}

          public void Text(int a){echo “int”}

          public void Text(string s,string a){echo “222”}

         即根据输入类型或者个数不一样,会调用Text()不同的功能

      。面向对象

        面向对象有三大特性,即封装,继承和多态。

        封装,为了让类更加安全

         class Ren

         {

              private $name;

              function setName($n)            设置name的值,可以加限制条件。

             { 

                 $this->name=$n;           

              } 

              

                function setName()            获取name的值。

                  { 

                    return $this->name;           

                   } 

         }

         封装要满足的条件,

          ,1 成员变量为私有,外界无法访问。

          ,2 做成员方法来间接访问。

          ,3 可以在该方法里加限制条件。

        。魔术方法     

            魔术方法写在类里面,会在执行时直接调用,用法没有变。

            class Ren

             {

                 private $name;

                 private $sex;

                 function __set(变量名称,变量值)                赋值

                 {

                      $this->变量名称=变量值;

                  }

                 function __get($n)                   取值

                 {

                    return $this->$n;

                  }

             }

            。继承

              子类可以继承父类的一切,出来私有的,即加了private的。

              单继承,只能有一个父类,也可以对父类进行重写,即定义一个和父类一样的方法。

              parent ::方法名() 可以调用父类,,这样会先执行父类的然后再加上重写的。

               class Ren

               {

                      $name;

                }

                

                 class China extends Ren   继承的关键词extends

                {        }

           。多态

             当父类引用指向子类实例的时候,由于子类对父类进行重写,该引用在调用方法的时候表现出的不同。

            子类可以代替父类。

           。静态

            普通成员   是属于对象的。

            静态成员   是属于类的   关键字 static

              class FenBi

              {

                       public $length;

                       public static $corlor;

                       public static function test()

                      {

                            echo "这是静态方法"

                       }

                       public function ceshi()

                      {

                           echo self::corlor                       调用静态成员的方法 self加双冒号,普通成员方法可以调用静态对象

                       }

                 }

               $a=now FenBi;

               $s->length;     普通成员调用方式

               $FenBi :: $corlor      静态成员的调用方式

                FenBi::test()    不用造对象就可以直接调用静态成员方法,静态成员方法不能调用普通成员,因为普通成员属于对象,不属于类

               FenBi::test()   普通成员方法可以调用静态对象

             。抽象

               抽象的关键字 abstract  抽象类,因为太过抽象,不能被实例化,常被用作为父类存在

                 abstract class DongWu

                {

                     public $name;

                     abstract public function test();       因为抽象类太过于抽象,抽象函数不能出现函数体。

                 }

                class Dog

               {          }

               $d=new Dog ;

               var_dump($d);        不可以读取,因为子类在在继承父类方法时,要重新写抽象方法

               1,因为抽象类太过于抽象,抽象函数不能出现函数体。

               2,子类在在继承父类方法时,要重新写抽象方法

               3,包含抽象方法的类一定是抽象类

            。接口

              接口,极度抽象的类 关键词 interface

                interface IUSB

                {

                     public function read();

                     public function write();

                 } 

                class ShuBiao implements IUSB       implements 相当于继承,在接口处称为实现

                {

                      public function read( “可读”);

                      public function write("可写");

                }

                总结:1,接口里面没有成员变量。

                         2,接口里的函数全部是抽象函数,没有函数体

                         3, 接口里默认函数为抽象函数,不用写关键字 static

               。__tostring

                 class Ren

                 {

                       public $name;

                       public function __tostring()

                       { return "这里是人类里面的名字选项"} 

                  } 

                 $r=new Ren;

                  echo $r;         在这里用echo会报错,因为加了__tostring 就可以直接输出

               。克隆

                  class Ren  

                 {

                      public $name="张三";

                      public function __clone()

                      {

                            $this->name=" 李四" ;   改变克隆的值。

                       }

                 }

                $r=new Ren();

                $c=clone $r;    c克隆r, 完全克隆,但是改变c的值不会影响r的值。

              。加载类

                1,in clude(“地址”)   在相同目录下 ./class文件名.class.php 

                2,in clude 空格“地址”  

                3,require(“地址”)

                4,require空格“地址”

                5,require_once("地址")

                6,require_once空格“地址”

             。自动加载类

                function __autoload($classname)

               {

                     require_once "./".$classname."class.php"

                }

              注意:1,所有类文件写在同一个目录下

                       2,类文件命名要一致

                       3,类的文件名要和文件名一致

  • 相关阅读:
    使用Koa搭建一个mock服务器
    d3 使用记录: 树形图
    转载: 矩阵的运算及运算规则
    d3 使用记录: 插值
    d3 使用记录: Selection
    转载: javascript 模块化历程
    Git 常用操作
    贝塞尔曲线_初探
    css 基础-
    Freemarker模板语法
  • 原文地址:https://www.cnblogs.com/cyd123/p/6739661.html
Copyright © 2020-2023  润新知