zoukankan      html  css  js  c++  java
  • PHP实现多继承

    题问php是否支持多继承?

    答案:不可以,只支持单继承。

    如何实现多继承呢?

    答案:可以使用 interfacetrait 实现 。

    interface这里我们就不做过多的说明了,它的原理就是一个类可以实现多个接口。下面这段代码就能够说明。

    interface test1{
        public function connect();
    }
    
    interface test2{
        public function contact();
    }
    
    // 类可以同时实现多个接口
    class myCode implements test1,test2{
        public function connect(){
        echo "test1!";
        }
        public function contact(){
        echo "test2!":
        }
    }


    下面我们重点讨论一下trait实现多继承(其实也不叫多继承,应该叫类似多继承的功能)
    那什么是trait呢?
    答:看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么;提供模块化实现。Trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制。
    那么怎么实现trait呢?看下面代码:

      //基本类
      class basicTest{
        public function test(){
          echo "hello,world ";
        }
      }
      //traitOne
      trait traitOne{
        public function test(){
          echo "this is trait one";
        }
        public function testOne(){
          echo "one<br />";
        }
      }
      //traitTwo
      trait traitTwo{
        // public function test(){
          // echo "this is trait two!";
        // }
        public function testTwo(){
          echo "Two<br />";
        }
       }
      //继承基本类,并use trait
      class myCode extends basicTest{
        use traitOne,traitTwo;
        public function test(){
          echo "hehaha!!<br />";
        }
      }

      $obj = new myCode();
      $obj->testTwo();

      注意:

    优先级:自身方法>trait的方法>继承的方法(就是这样子的。)
    如果我们打开上述代码中的注释,会报错,因为两个trait中的方法重名了。解决办法及trait详情,可以参考以下网站:
    https://php.net/manual/zh/language.oop5.traits.php



  • 相关阅读:
    windows下mongodb的安装
    命令行执行大sql文件
    用css实现3D立方体旋转特效
    tp框架的详细介绍,tp框架基础
    用smarty来做简易留言系统,明细步骤简单操作
    怎么用php语言来做文件缓存
    用smarty模板做数据实现修改、分页等功能
    用smarty模板做的登录
    smarty函数
    Smarty变量
  • 原文地址:https://www.cnblogs.com/573734817pc/p/10996375.html
Copyright © 2011-2022 走看看