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.