кстати также нельзя юзать: свич, протектед пропертиз, абстрактные методы вне интерфейсов, динамические вызовы и обращения к полям, статические методы и классы, деструктуризацию массивов, массивы с ключами строками, и многое другое - нет желания сейчас полный список формулировать. но мне нравятся эти требования. они заставляют думать и делать хорошо
Протектед нужен только если у класса будут наследники и только если очень надо какой-то метод специально сделать доступным из наследников. Бездумно делать все методы и поля protected также глупо, как всё по умолчанию бездумно делать public. Если в своём коде не юзать наследование от своих классов, то протектед вообще не нужен.