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



  • 相关阅读:
    Spring——注解代替XML配置文件,Spring与JUnit整合
    Spring——基本概念(IOC,DI思想),Spring配置文件(XML),属性注入,Spring与Web项目结合
    Struts——自定义拦截器
    Struts——OGNL表达式与Struts2结合
    Struts2——结果跳转方式配置(重定向,转发<默认>,重定向到方法,重定向到转发),获取servlet的内些API(request,servletcontext...),获取参数
    Struts2——基本使用与配置文件
    基于中间件的RBAC权限控制
    Django
    Django
    Django 中 admin 的执行流程
  • 原文地址:https://www.cnblogs.com/573734817pc/p/10996375.html
Copyright © 2011-2022 走看看