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?


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.


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
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.