Qual a diferença entre incluir e exigir no fantoche

8

Eu tenho uma aula de fantoches se tiver o seguinte código:

class A {
  require B

....
} 

Recebo erro de dependências circulares. Se eu tiver:

class A {
  include B

....
} 

tudo funciona bem

talg
fonte

Respostas:

18

São coisas muito diferentes, na verdade. Dizer que os require Bmeios Bdevem vir antes A(e, portanto, pode levar a dependências circulares se algo Bacontecer require A). E se Bnão estiver incluído, isso levará ao erro de dependências ausentes.

Por outro lado, include Bapenas diz Bque será aplicado sempre que Afor aplicado: não diz nada da ordem entre eles.

Daniel C. Sobral
fonte
require BNa verdade, isso não significa que Bdeve vir antes A?
Sebastian Krysmanski
@SebastianKrysmanski Uh, sim. :)
Daniel C. Sobral
10

Isso foi solicitado (e respondido) na lista de discussão de bonecos:

A diferença é evidente quando o catálogo precisa ser aplicado. Com include você avaliou seu conteúdo no momento da inclusão - mas qualquer recurso deve ser explicitamente dependente após a inclusão. Com uma exigência - a dependência é criada para você - mas você deve ter cuidado e garantir que este seja o resultado desejado

- Ken Barber em Exigir vs Incluir?

larsks
fonte