Я нашел решение. Что-то в PHP называется Trait
.
Пример:
class UserRepository extends EntityRepository {
public function adminQuery1();
public function adminQuery2();
public function adminQuery3();
public function adminQuery4();
public function adminQuery5();
public function adminQuery6();
public function frontEndQuery1();
public function frontEndQuery2();
public function frontEndQuery3();
public function frontEndQuery4();
public function frontEndQuery5();
public function frontEndQuery6();
}
Теперь продолжайте работать с разными частями запросов, и ваш репозиторий быстро станет запутанным и слишком длинным.
Вы могли бы
- Создать несколько хранилищ, которые наследуют друг друга ИЛИ
- Использовать черты
Пример ниже:
Trait AdminQuery {
public function adminQuery1();
public function adminQuery2();
public function adminQuery3();
public function adminQuery4();
public function adminQuery5();
public function adminQuery6();
}
Trait FrontEndQuery {
public function adminQuery1();
public function adminQuery2();
public function adminQuery3();
public function adminQuery4();
public function adminQuery5();
public function adminQuery6();
}
Фактический класс хранилища.
class UserRepository extends EntityRepository {
use AdminQuery;
use FrontEndQuery;
}
Прелесть этого в том, что ключевое слово this
будет ссылаться на контекст, в котором использовался Trait
, что означает, что у вас есть доступ ко всем функциям EntityRepository
Наконец-то нашли вариант использования для Trait
.