Zugriffsmodifikatoren und Traits in OOP in PHP

Es ist darauf hinzuweisen, dass die Verwendung von Traits keine Vererbung ist. Bei der Vererbung werden private Methoden und Eigenschaften nicht vererbt.

Bei Traits ist es umgekehrt: In der Klasse, die den Trait verwendet, sind sowohl öffentliche als auch private Methoden und Eigenschaften des Traits verfügbar.

Schauen wir uns ein Beispiel an. Nehmen wir an, wir haben den folgenden Trait mit einer privaten Methode:

php<?php
  trait TestTrait
  {
    private function method()
    {
      return '!!!';
    }
  }
?>

Binden wir unseren Trait in eine Klasse ein:

php<?php
  class Test
  {
    use TestTrait;
  }
  
  new Test;
?>

Verwenden wir die private Methode des Traits:

php<?php
  class Test
  {
    use TestTrait; // Trait einbinden
    
    public function __construct()
    {
      echo $this->method(); // gibt '!!!' aus
    }
  }
  
  new Test;
?>