zoukankan      html  css  js  c++  java
  • insteadof

    在php手册中间搜索insteadof是没有结果的。

    insteadof主要是用来解决在同一个类中同时使用多个trait,然而在使用的这些trait中方法名称冲突的问题。

    借用别人的例子:

    <?php

    class Base
    {
      public function hello()
      {
        echo 'method hello from class Base' . '<br>';
      }
    }

    trait Hello
    {
      public function hello()
      {
        echo 'method hello from Trait Hello' . '<br>';
      }
      public function hi()
      {
        echo 'method hi from Trait Hello' . '<br>';
      }
      abstract public function getValue();
      static public function staticMethod()
      {
        echo 'static method staticMechod from Trait Hello' . '<br>';
      }
      public function staticValue()
      {
        static $value;
        $value++;
        echo $value . '<br>';
      }
    }

    trait Hi
    {
      public function hello()
      {
        parent::hello();
        echo 'method hello from Trait Hi' . '<br>';
      }
      public function hi()
      {
        echo 'method hi from Trait Hi' . '<br>';
      }
    }

    trait HelloHi
    {
      use Hello, Hi{
        Hello::hello insteadof Hi;
        Hi::hi insteadof Hello;
      }
    }

    class MyNew extends Base
    {
      use HelloHi;
      private $value = 'class MyNew' . '<br>';
      public function hi()
      {
        echo 'method hi from class MyNew' . '<br>';
      }
      public function getValue()
      {
        retturn $this->value;
      }
    }

    $obj = new MyNew();
    $obj->hello();
    //输出:'method hello from Trait Hello'
    //优先级顺序:trait类中的方法覆盖了base中的方法,然后通过insteadof 指定了Hello中的hello方法覆盖了Hi中的hello方法

  • 相关阅读:
    pycharm 2016.2注册码
    python selenium2
    webdriver.py--解说
    Sahi ---实现 Web 自动化测试
    性能测试
    看云-git类的书籍写作
    IntelliJ IDEA 对于generated source的处理
    各种常用的序列化性能的对比
    rpc框架--grpc-java
    grpc mvn protobuf:compile 过程
  • 原文地址:https://www.cnblogs.com/buerr/p/6694296.html
Copyright © 2011-2022 走看看