{"id":229945,"date":"2022-11-14T14:13:00","date_gmt":"2022-11-14T11:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229945"},"modified":"2022-11-14T14:13:57","modified_gmt":"2022-11-14T11:13:57","slug":"por-que-se-preocupar-com-o-carregamento-automatico-no-wordpress-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/por-que-se-preocupar-com-o-carregamento-automatico-no-wordpress-parte-2\/","title":{"rendered":"Por que se preocupar com o carregamento autom\u00e1tico no WordPress, parte 2"},"content":{"rendered":"\n<p>No <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/por-que-se-preocupar-com-o-carregamento-automatico-no-wordpress-parte-1\/\" title=\"post anterior\">post anterior<\/a>, abordei alguns pontos sobre por que acho que <strong>include_once, <em><\/em><\/strong> require_once<em><\/em> e outras declara\u00e7\u00f5es semelhantes resultam em pr\u00e1ticas de desenvolvimento ruins (pelo menos quando se trata do trabalho que estamos fazendo com nossos projetos WordPress ).<\/p>\n<p>Se voc\u00ea n\u00e3o leu, n\u00e3o tem problema. A ess\u00eancia do post \u00e9 que essas declara\u00e7\u00f5es fazem:<\/p>\n<ol>\n<li>depura\u00e7\u00e3o mais dif\u00edcil,<\/li>\n<li>c\u00f3digo de rastreamento mais dif\u00edcil de fazer.<\/li>\n<\/ol>\n<p>Em \u00faltima an\u00e1lise, s\u00e3o coisas que podemos evitar. Finalizei o post com o seguinte:<\/p>\n<p>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>E embora eu adoraria cobrir todos os detalhes neste post, ser\u00e1 necess\u00e1rio este e mais um post como importante para entender alguns t\u00f3picos fundamentais sobre linguagens, int\u00e9rpretes e compiladores antes de ir muito longe.<\/p>\n<h2>Carregamento autom\u00e1tico no WordPress: tipos de idiomas<\/h2>\n<p>Quando se trata de linguagens de programa\u00e7\u00e3o, elas podem ser divididas em dois tipos distintos de linguagens:<\/p>\n<ol>\n<li>digitado estaticamente<\/li>\n<li>digitado dinamicamente<\/li>\n<\/ol>\n<p>Eles s\u00e3o f\u00e1ceis de detectar, tamb\u00e9m.<\/p>\n<h3>Idiomas Estaticamente Digitados<\/h3>\n<p>Uma linguagem com tipagem est\u00e1tica significa que quando voc\u00ea declara uma vari\u00e1vel, como uma string, um inteiro ou um n\u00famero de ponto flutuante, ela mant\u00e9m esse tipo durante todo o seu tempo de vida.<\/p>\n<p>Isso n\u00e3o significa que ele n\u00e3o possa ser alterado ou analisado em outro tipo, mas a ideia \u00e9 que voc\u00ea declare seu tipo e \u00e9 assim que ele \u00e9 operado.<\/p>\n<p>Geralmente \u00e9 especificado como um determinado tipo quando \u00e9 declarado, como <strong>string<\/strong> ou <strong>int<\/strong>, e \u00e9 visto com mais frequ\u00eancia em linguagens compiladas.<\/p>\n<h3>Idiomas de tipagem din\u00e2mica<\/h3>\n<p>As linguagens tipadas dinamicamente, por outro lado, possuem vari\u00e1veis \u200b\u200bque s\u00e3o mais fluidas, por falta de um termo melhor, por natureza.<\/p>\n<p>Ou seja, voc\u00ea pode inicialmente declar\u00e1-lo como uma <strong>string<\/strong> e depois compar\u00e1-lo com um <strong>inteiro<\/strong> e depois us\u00e1-lo como uma <strong>string<\/strong> novamente.<\/p>\n<p>O interpretador ou compilador (dependendo da linguagem que voc\u00ea est\u00e1 usando) far\u00e1 o melhor que puder para inferir o que voc\u00ea est\u00e1 tentando fazer com base no contexto do que voc\u00ea est\u00e1 fazendo em seu c\u00f3digo, mas nem sempre est\u00e1 certo.<\/p>\n<p>Isso pode levar a efeitos colaterais e bugs estranhos.<\/p>\n<p>JavaScript \u00e9 assim. Para ver um exemplo, abra o console do seu navegador e digite algo parecido com o que voc\u00ea v\u00ea na captura de tela a seguir (e preste aten\u00e7\u00e3o no resultado):<\/p>\n<p>Observe que quando usamos um sinal de igual duplo padr\u00e3o, o interpretador for\u00e7a a string para o tipo booleano, mesmo que a string verdadeira n\u00e3o seja verdadeira.<\/p>\n<p>O segundo caso \u00e9 preciso (e \u00e9 por isso que o triplo-igual quase sempre deve ser usado).<\/p>\n<p>Al\u00e9m disso, como algo pode funcionar em um idioma n\u00e3o \u00e9 como pode funcionar em outro idioma.\n<\/p>\n<p>A conclus\u00e3o \u00e9 que n\u00e3o espere que seus idiomas fa\u00e7am a mesma coisa s\u00f3 porque eles podem suportar digita\u00e7\u00e3o din\u00e2mica.<\/p>\n<h2>O que isso tem a ver com o carregamento autom\u00e1tico?<\/h2>\n<p>Ok, ent\u00e3o falamos um pouco sobre primitivos e tudo isso est\u00e1 bem, mas n\u00e3o faz muito quando falamos sobre classes, objetos, instancia\u00e7\u00e3o, carregamento autom\u00e1tico e assim por diante, n\u00e3o \u00e9?<\/p>\n<p>O objetivo de trazer \u00e0 tona os t\u00f3picos mencionados \u00e9 mostrar o papel que interpretadores e compiladores desempenham ao trabalhar com c\u00f3digo em linguagens din\u00e2micas.<\/p>\n<p>E isso \u00e9 importante porque PHP \u00e9 uma linguagem din\u00e2mica.<\/p>\n<p>Neste ponto, eu originalmente come\u00e7aria a olhar para o c\u00f3digo PHP de amostra, namespaces, carregamento autom\u00e1tico,\u00a0 instru\u00e7\u00f5es de <strong>inclus\u00e3o<\/strong> e tudo isso, mas tento manter meus artigos em um certo comprimento e isso come\u00e7ou a se estender um pouco mais do que eu queria .<\/p>\n<p>Ent\u00e3o, a conclus\u00e3o final deste post, se eu tivesse que resumir, \u00e9 esta:<\/p>\n<p>Linguagens tipadas dinamicamente, como PHP, n\u00e3o t\u00eam o luxo de linguagens compiladas onde tudo \u00e9 compilado em um \u00fanico bin\u00e1rio. Temos que dizer ao programa, de alguma forma, onde existem as depend\u00eancias dentro do contexto do programa maior.<\/p>\n<p>E \u00e9 isso que pretendo abordar no pr\u00f3ximo post.<\/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>Entender linguagens de tipagem din\u00e2mica e linguagens de tipagem est\u00e1tica \u00e9 fundamental quando se trata de entender o carregamento autom\u00e1tico no WordPress e no PHP.<\/p>\n","protected":false},"author":1,"featured_media":165674,"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-229945","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\/229945","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=229945"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229945\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/165674"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}