Por que o núcleo usa impressão em vez de eco?

24

Eu li em algum lugar, e não me lembro onde, essa echoé uma maneira mais eficiente de gerar dados print.

Por que o núcleo Drupal usa printtanto? Existe alguma razão especial por trás disso?

jayarjo
fonte
11
Em uma nota lateral: print sempre retornará 1 como um valor, o eco não retornará nada. Eu acho que isso pode ser útil em alguns casos.
Bart
Que tipo de caso pode ser?
Jayarjo
Eu também me perguntei isso! Boa pergunta!
aendrew

Respostas:

25

echoé apenas mais rápido em ambientes acadêmicos. A diferença é muito marginal. Uma referência rápida que acabei de fazer: o tempo de busca de uma linha de uma tabela com mais de 2000 nós é de 1 unidade.

Para obter uma melhoria de 1 unidade, eu precisaria substituir cerca de 3.700.000 (mais de 3 milhões) de printdeclarações por echo. Em outras palavras, se você deseja melhorar o desempenho, esse dificilmente é o ponto de partida.

Visto que printpode ser usado em uma variedade muito maior de casos echo, o primeiro tem algumas vantagens. Deixa-lhe três opções:

  • Sempre use print
  • Use sempre echoque possível e faça fallback emprint
  • Use echosempre e refatorar seu código, se echonão puder ser usado, para usá-lo

Drupal assumiu como padrão o primeiro.

Para responder à sua pergunta real sobre por que isso foi escolhido: não foi. Simplesmente cresceu assim.

berkes
fonte
Você poderia fornecer um exemplo de quando o eco não pode ser usado? É que eu não consigo imaginar nada no momento.
Jayarjo
6
O mais óbvio é if (! print some_method() ) {print some_other_method()}. Uma vez que print retorna TRUE se realmente imprimiu alguma coisa. O eco não retorna nada, e é por isso que também é mais rápido. Outro exemplo que você verá é return print $somevalueno final de um método para retornar o status.
Berkes