Αλλαγές στα δικαιώματα πρόσβασης των μεθόδων των traits στο ΑΟΠ της PHP

Μέσα σε ένα trait μπορείτε να χρησιμοποιήσετε οποιοδήποτε τροποποιητή πρόσβασης για μεθόδους (δηλαδή public, private ή protected). Εάν χρειαστεί, ωστόσο, στην ίδια την κλάση μπορείτε να αλλάξετε αυτόν τον τροποποιητή σε άλλον. Για αυτό, στο σώμα του use μετά από τη λέξη-κλειδί as πρέπει να καθορίσετε τον νέο τροποποιητή.

Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε το ακόλουθο trait με μια ιδιωτική μέθοδο:

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

Ας συνδέσουμε το trait μας με την κλάση:

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

Ας αλλάξουμε τη μέθοδο στην κλάση σε δημόσια:

php<?php
  class Test
  {
    use TestTrait {
      TestTrait::method as public;
    }
  }
?>

Ας ελέγξουμε τη λειτουργία της δημόσιας μεθόδου από έξω από την κλάση:

php<?php
  $test = new Test;
  echo $test->method(); // θα εμφανίσει '!!!'
?>