{"id":229936,"date":"2022-11-14T12:34:00","date_gmt":"2022-11-14T09:34:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229936"},"modified":"2022-11-14T12:49:01","modified_gmt":"2022-11-14T09:49:01","slug":"por-que-se-preocupar-com-o-carregamento-automatico-no-wordpress-parte-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/por-que-se-preocupar-com-o-carregamento-automatico-no-wordpress-parte-1\/","title":{"rendered":"Por que se preocupar com o carregamento autom\u00e1tico no WordPress, parte 1"},"content":{"rendered":"\n<p>Uma das coisas mais f\u00e1ceis que podemos fazer ao trabalhar em plugins do WordPress \u00e9 descartar\u00a0 as instru\u00e7\u00f5es <strong>require_once<\/strong> ou <strong>include_once<\/strong> em todo o nosso c\u00f3digo.<\/p>\n<p>E porque n\u00e3o? \u00c9 uma maneira f\u00e1cil de trazer todos os arquivos ou depend\u00eancias necess\u00e1rios para uma determinada classe, torn\u00e1-la facilmente leg\u00edvel e n\u00e3o ter que se preocupar em criar arquivos de c\u00f3digo enormes. Ou seja, isso nos ajuda a simplificar o que estamos escrevendo para que possamos fazer com que nossas classes [principalmente ou idealmente] fa\u00e7am o que est\u00e3o fazendo bem.<\/p>\n<p>Se voc\u00ea leu este site no ano passado, sabe que sou f\u00e3 de carregamento autom\u00e1tico e acho que qualquer pessoa que trabalha com PHP &#8211; independentemente de estar usando WordPress ou outra plataforma &#8211; deveria usar.<\/p>\n<p>Mas isso levanta duas quest\u00f5es, especialmente se voc\u00ea est\u00e1 apenas come\u00e7ando:<\/p>\n<ol>\n<li>Por que se preocupar com o carregamento autom\u00e1tico quando existem outras maneiras de lidar com as depend\u00eancias de carregamento?<\/li>\n<li>Como o carregamento autom\u00e1tico se compara \u00e0s linguagens compiladas?<\/li>\n<\/ol>\n<p>Ent\u00e3o achei que valeria a pena responder isso nos pr\u00f3ximos posts.<\/p>\n<h2>Por que se preocupar com o carregamento autom\u00e1tico?<\/h2>\n<p>O curta \u00e9 isso:<\/p>\n<ol>\n<li><strong>require_once<\/strong> e <strong>include_once<\/strong> podem levar a c\u00f3digos dif\u00edceis de depurar,<\/li>\n<li>\u00e9 dif\u00edcil rastrear o c\u00f3digo.<\/li>\n<\/ol>\n<p>Mas como assim?<\/p>\n<h3>1 A depura\u00e7\u00e3o \u00e9 dif\u00edcil<\/h3>\n<p>Ao escrever c\u00f3digo, se alguma coisa \u00e9 certa, \u00e9 que haver\u00e1 algo que n\u00e3o funcionar\u00e1 como pretendido. Est\u00e1 na natureza do que fazemos, certo?<\/p>\n<p>Ent\u00e3o, quando chega a hora de depurar c\u00f3digo, todos n\u00f3s temos nossas estrat\u00e9gias.<\/p>\n<ul>\n<li>alguns de n\u00f3s optam por usar <strong>echo<\/strong> ou <strong>var_dump<\/strong> para rastrear c\u00f3digo,<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/debug-bar-console\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">use um plugin<\/a> no WordPress,<\/li>\n<li>outros usam um depurador.<\/li>\n<\/ul>\n<p>Embora este post n\u00e3o seja sobre como depurar, \u00e9 o fato de que temos que depurar. Ent\u00e3o, se sabemos que vamos ter que fazer isso, n\u00e3o dever\u00edamos facilitar ao m\u00e1ximo para n\u00f3s mesmos?<\/p>\n<p>PHP \u00e9 uma linguagem tipada dinamicamente, ent\u00e3o h\u00e1 muitas coisas, em geral, que s\u00e3o cuidadas para n\u00f3s sempre que estamos escrevendo o c\u00f3digo. Ou seja, certas coisas s\u00e3o inferidas ou coagidas sempre que o c\u00f3digo \u00e9 executado.<\/p>\n<p>Por exemplo, suponha que voc\u00ea esteja trabalhando com uma string e a esteja comparando com um n\u00famero. O interpretador far\u00e1 o que puder para adivinhar o que voc\u00ea est\u00e1 fazendo (voc\u00ea est\u00e1 procurando analisar a string para um inteiro ou vice-versa?) e depois trabalhar com isso.<\/p>\n<p>Trabalhar apenas com vari\u00e1veis \u200b\u200bpode ser um exerc\u00edcio de precis\u00e3o porque queremos que nosso c\u00f3digo seja lido como pretendemos. Por que deixar para o int\u00e9rprete adivinhar o que queremos dizer? E se o int\u00e9rprete tem que fazer um trabalho extra, os humanos certamente o fazem.<\/p>\n<p>Para esse fim, se sabemos que bugs ser\u00e3o introduzidos e sabemos que existem maneiras de escrever um c\u00f3digo mais limpo, por que n\u00e3o o fazemos?<\/p>\n<h3>2 O rastreamento \u00e9 dif\u00edcil (ou talvez mais dif\u00edcil?)<\/h3>\n<p>Mas isso ainda n\u00e3o fornece uma raz\u00e3o pela qual devemos confiar em algo como um autoloader versus recursos internos da linguagem, n\u00e3o \u00e9?<\/p>\n<p>Considere o seguinte: digamos que voc\u00ea esteja procurando em um arquivo tentando encontrar um bug e encontre uma fun\u00e7\u00e3o que tenha algum c\u00f3digo, use <strong>include_once<\/strong> e, em seguida, use algum outro c\u00f3digo.<\/p>\n<p>Isso significa que voc\u00ea tem que ler o c\u00f3digo, manter isso arquivado mentalmente, pular para outro arquivo, entender esse c\u00f3digo e depois retornar ao arquivo original. E isso pressup\u00f5e que o segundo arquivo tamb\u00e9m n\u00e3o <strong>inclua<\/strong> ou <strong>exija<\/strong> outros arquivos.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165694-61e786c8874b7.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165694-61e786c8874b7.jpg\" alt=\"Por que se preocupar com o carregamento autom\u00e1tico no WordPress, parte 1\"><\/a><\/p>\n<p>\u00c9 chamado de c\u00f3digo de espaguete por um motivo.<\/p>\n<p>Com isso dito, voc\u00ea pode ver a situa\u00e7\u00e3o que isso apresenta quando voc\u00ea opta por aninhar esse c\u00f3digo em todo o resto do seu programa. Resumindo, voc\u00ea aninhado a inclus\u00e3o de depend\u00eancias que inerentemente torna mais dif\u00edcil rastrear onde algo pode estar errado.<\/p>\n<p>Isso n\u00e3o quer dizer que o carregamento autom\u00e1tico corrige isso automaticamente, mas quer dizer que n\u00e3o precisa ser assim. Em vez disso, voc\u00ea pode escrever c\u00f3digo que instancia classes, chama m\u00e9todos e, em seguida, executa c\u00f3digo sem a necessidade de incluir nada manualmente.<\/p>\n<h3>C\u00f3digo mais leg\u00edvel e rastre\u00e1vel<\/h3>\n<p>Ao fazer isso, acho que isso nos for\u00e7a a escrever um c\u00f3digo mais limpo, sem d\u00favida um c\u00f3digo mais sustent\u00e1vel. Tamb\u00e9m torna mais f\u00e1cil escrever c\u00f3digo que podemos rastrear mais facilmente, e isso \u00e9 mais f\u00e1cil de alavancar com um depurador.<\/p>\n<p>Ou seja, podemos definir pontos de interrup\u00e7\u00e3o em determinados lugares em nosso c\u00f3digo, fazer com que o depurador nos leve automaticamente para a classe que est\u00e1 sendo invocada e volte para a fun\u00e7\u00e3o que a estava chamando.<\/p>\n<p>Isso n\u00e3o significa que n\u00e3o possa ser feito de outra maneira, mas os benef\u00edcios superam em muito as alternativas. E, \u00e9 claro, isso ainda deixa a quest\u00e3o de por que o carregamento autom\u00e1tico (ou qualquer inclus\u00e3o de arquivos de terceiros) \u00e9 necess\u00e1rio.<\/p>\n<p>Mas \u00e9 isso que ser\u00e1 abordado na segunda parte da s\u00e9rie.<\/p>\n<h2>Outras leituras<\/h2>\n<p>Meu post sobre <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/namespaces-e-carregamento-automatico-no-wordpress\/\" title=\"Namespaces e Autoloading no WordPress\">Namespaces e Autoloading no WordPress<\/a>, assim como o <a href=\"https:\/\/github.com\/tommcfarlin\/simple-autoloader-for-wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Simple Autoloader for WordPress,<\/a> s\u00e3o dois outros recursos que obviamente acho relacionados a este post em particular. Portanto, se voc\u00ea tiver tempo, verifique-os (e n\u00e3o hesite em abrir um problema ou uma solicita\u00e7\u00e3o de pull no projeto simples do autoloader).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>J\u00e1 falei e escrevi sobre carregamento autom\u00e1tico no WordPress antes, mas ainda acho que os benef\u00edcios do carregamento autom\u00e1tico ajudam a escrever c\u00f3digo organizado e rastre\u00e1vel.<\/p>\n","protected":false},"author":1,"featured_media":165695,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,846],"tags":[1170],"class_list":["post-229936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-tutoriais","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=229936"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229936\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/165695"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}