PHP:类的特征和其他特征冲突

我的PHP特性有问题.
我想在一个类中以及在该类中使用的一个特征中使用一个特征.

例:

trait Loggable {
  protected function log(msg) { 
    echo msg; 
  }
}

trait SomeOtherTrait {
  use Loggable;
}

class MyClass {
  use SomeOtherTrait, Loggable;
}

但这会导致冲突,因为Loggable在类中使用了两次(一次在类中,通过其他特征一次),但是我不明白这个问题,因为封装功能就是所有特征的全部,对不对?
所以我只想在包含Loggable特征的任何地方使用log方法

所以问题是:为什么会发生碰撞?两者(特征和类)都指向相同的特性和方法,因此不应有冲突.

解决方法:

SomeOtherTrait使用Loggable特性,因此您可以访问Loggable的所有受保护成员和公共成员,并且对使用SomeOtherTrait的所有类也是如此.在这里,您可以访问Loggable和SomeOtherTrait的所有公共成员和受保护成员.

trait Loggable {
   protected function log($msg) { 
      echo $msg; 
   }
}

trait SomeOtherTrait {
   use Loggable;
}

class MyClass {
   use SomeOtherTrait;

   public function test() 
   { 
       $this->log("test");
   }
}

$myClass = new MyClass();

$myClass->test();

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...