Какая разница между включить и требовать в марионетке


8

У меня есть класс в кукольный, если у меня есть следующий код:

class A {
  require B

....
} 

Я получаю ошибку циклических зависимостей. Если у меня есть:

class A {
  include B

....
} 

все отлично работает

Ответы:


18

На самом деле это очень разные вещи. Сказать, что require Bсредства Bдолжны прийти раньше A(и, следовательно, может привести к круговым зависимостям, если что-то Bокажется require A). А если Bне включить вообще, это приведет к ошибке отсутствующих зависимостей.

С другой стороны, include Bпросто говорит, Bчто будет применяться всякий раз, когда Aприменяется: он ничего не говорит о порядке между ними.


Разве это не require Bзначит, что это Bдолжно произойти раньше A?
Себастьян Крысманский

@SebastianKrysmanski О, да. :)
Даниэль С. Собрал

10

Это просто спросили (и ответили) в списке рассылки марионеток:

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

- Кен Барбер в Требовать против Включить?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.