Устаревание TableRegistry :: get () - PullRequest
0 голосов
/ 25 мая 2018

Я хотел бы спросить, что вы думаете об устаревании TableRegistry::get() статического вызова в CakePHP 3.6?

На мой взгляд, это не очень хорошая идея.

Сначалаиз всех, использование LocatorAwareTrait неправильно на многих уровнях.Самое важное, что использование таких признаков может нарушить принципы единой ответственности и разделения интересов.Кроме того, некоторые разработчики не хотят использовать черты как все, потому что считают, что это нарушает объектно-ориентированный шаблон проектирования.Они предпочитают делегирование.

Я предпочитаю также использовать делегирование с сочетанием подхода «легкий вес» и «синглтон».Я знаю, что делегирование инкапсулировано LocatorAwareTrait, но единственная проблема состоит в том, что он предоставляет (получить / установить) методы TableLocator, которые могут быть использованы неправильно.

Другими словами, если у меня есть следующий фасад:

class Fruits {
    use \Cake\ORM\Locator\LocatorAwareTrait;

    public function getApples() { ... }
    public function getOranges() { ... }
    ...
}

$fruits = new Fruits();

Я не хочу иметь возможность вызывать $ fruits-> getTableLocator () -> get ('table') вне области действия Fruits.

Другая вещь, которую выНеобходимо учитывать, когда вы вносите такие изменения, является адаптация структуры.Делать TableRegistry::getTableLocator()->get('table') каждый раз, когда мне нужно получить доступ к модели, - не самая лучшая вещь, если у меня в приложении несколько модулей, которые выходят за рамки простой многоуровневой архитектуры.

Наличие класса flyweight / singleton, такого как TableRegistry, со свойством getдоступ к нужной модели просто делает разработку более понятной и облегчает жизнь.

В идеале, я просто хотел бы позвонить TR::get('table'), хотя это нарушает стандарты кодирования Cake.(В любом случае я создал эту обертку для себя, чтобы защитить свое приложение от любых подобных изменений)

Что вы думаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...