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

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.


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?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.