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



  • 相关阅读:
    [SoapUI] 在执行某个TestSuite之前先执行login或者其他什么前置步骤
    [Groovy] How to check if element in groovy array/hash/collection/list?
    [Groovy] List和Map用法搜集
    [Groovy] 实战 Groovy, for each 剖析
    Groovy基本语法
    [BAT] xcopy拷贝远程服务器共享文件到本地
    [BAT] Access Denied in XCopy
    [BAT] 执行xcopy命令后出现Invalid num of parameters错误的解决办法
    [Automation] 自动化测试度量标准
    jsp页面直接编写csss
  • 原文地址:https://www.cnblogs.com/573734817pc/p/10996375.html
Copyright © 2011-2022 走看看