Неправильная практика доступа к компоненту приложения из другого компонента? Если да: почему? Если нет: что было бы лучшей практикой? Я не нашел хорошего совета для этого вопроса в руководстве.Предложенный способ доступа к компоненту из другого компонента в Yii2?
ответ
Вы можете получить доступ к любому компоненту из любого места в вашем приложении через Yii::$app->componentName
.
Но я не думаю, что это хорошая практика, чтобы сделать это прямо так.
По крайней мере, чтобы ваш компонент был изолирован, вы должны иметь в виду, что componentName
является заданной конфигурацией приложения-операнда. Таким образом, вы должны указать имя ссылочного компонента в зависимую конфигурацию компонента.
В вашей components/MyComponent.php
:
class MyComponent extends Component
{
public $referencedComponentName = 'defaultName';
...
}
В config/web.php
:
...
components => [
'myComponent' => [
...
'referencedComponentName' => 'otherComponent'
]
]
Таким образом, вы можете вызвать другую comonent в коде компонента, как это:
use yii;
...
class MyComponent extends Component
{
...
public function getReferencedComponent()
{
return \Yii::$app->get($this->referencedComponentName);
}
Но этот путь также не очень хорошо. В соответствии с принципом инверсии Depenency лучшим способом будет определение некоторой абстракции для ссылочного компонента (интерфейс для примера), который будет реализован в конфигурации родительского приложения. Но здесь я не могу дать ценный пример , потому что я не знаю вашей конкретной задачи и структуры приложения.
- 1. Доступ к компоненту Flex для другого компонента
- 2. React: Как получить доступ к компоненту из другого компонента?
- 3. Oracle ADF - Доступ к bean-компоненту из другого компонента
- 4. Угловой компонент 2 доступа из другого компонента
- 5. Доступ к дочернему компоненту из родительского компонента
- 6. Доступ к компоненту внутри компонента
- 7. EmberJS: Доступ к компоненту html из компонента js
- 8. Реакт: функция компонента доступа от другого компонента
- 9. переменные доступа Angular2 из другого компонента
- 10. состояния доступа реагировать компонент из другого компонента
- 11. ReactJs Передача аргумента от компонента к компоненту
- 12. Swipe Event: нет доступа к компоненту
- 13. Переменная компонента доступа с угловым 2 от службы, привязанная к другой службе, которая привязана к компоненту
- 14. Доступ к дочернему компоненту из исходного компонента в responsejs
- 15. Принуждение компонента к перерисовке из другого компонента в Mithril.js
- 16. доступа активируется данные маршрута из некоторых другого компонента
- 17. Как имя компонента относится к компоненту?
- 18. Импорт компонента из другого компонента
- 19. NetBeans Matisse - Доступ к компоненту jframe из другого класса
- 20. Redhawk Property/Config из компонента А к компоненту Б
- 21. Есть ли способ манипулировать состоянием компонента из другого компонента?
- 22. Angular2 маршрутизатора - доступ к переменным родительскому компоненту внутри дочернего компонента
- 23. Невозможно получить доступ к управляемому bean-компоненту из другого управляемого компонента
- 24. Способ доступа из другого вида деятельности
- 25. Получение компонента кинжала без доступа к приложению
- 26. Правильный способ доступа к компонентам Yii2 в ваших модулях?
- 27. Доступ к компонентам из другого компонента
- 28. Правильный способ доступа к Mainwindows Частные переменные из другого класса
- 29. Лучший способ доступа к управлению MainWindow из другого потока?
- 30. Объект данных доступа к компоненту Vue
Спасибо [@ maxim-korshunov] (http://stackoverflow.com/users/6479466) за подробный ответ. Полагаю, вы правы во всех отношениях. – twigmac