Traits
trait Log {

  protected function log($message) {
    echo "$message<br>\n";
  }

}

trait Informer {

  // This method has the same name as the parent, which will cause a collision.
  // Need to tell caller to use parent (see below)
  protected function log() {
    echo "I had a big ass ham sandwich for lunch and I'm still hungry.<br>\n";
  }

}

trait Traffic {

  protected function suspend() {
    echo "All Systems have been SUSPENDED! Try again later.<br>\n";
  }

}

class Table {

  use Traffic, Log, Informer {

    Log::log insteadof Informer;

  }

  public function save() {

    $this->log('HTTP/2 protocol will be inactive');
    $this->suspend();
  }
}

// I HATE this syntax!
//(new Table())->save();
//echo "//##############################<br>\n";

$t = new Table;
$t->save();
echo "//##############################<br>\n";