{"id":26680,"date":"2021-04-29T18:53:00","date_gmt":"2021-04-29T15:53:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26680"},"modified":"2021-10-18T04:20:32","modified_gmt":"2021-10-18T01:20:32","slug":"programacao-avancada-de-php-como-usar-o-namespace-em-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/programacao-avancada-de-php-como-usar-o-namespace-em-php\/","title":{"rendered":"Programa\u00e7\u00e3o avan\u00e7ada de PHP &#8211; como usar o namespace em PHP"},"content":{"rendered":"<p>Para iniciantes em PHP, o conceito de namespaces parece bastante complexo. Mas, uma vez que entendemos os fundamentos de namespaces, \u00e9 f\u00e1cil de implementar. Neste artigo, estudamos como usar o namespace em PHP.<\/p>\n<p>Como desenvolvedor, voc\u00ea ter\u00e1 uma no\u00e7\u00e3o da programa\u00e7\u00e3o PHP avan\u00e7ada enquanto usa os namespaces em seu c\u00f3digo.<\/p>\n<p>PHP introduziu namespaces para evitar conflitos de nomenclatura entre classes, fun\u00e7\u00f5es e constantes.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20856-6082335e78ff5.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20856-6082335e78ff5.png\" alt=\"Programa\u00e7\u00e3o avan\u00e7ada de PHP - como usar o namespace em PHP\" ><\/a><\/p>\n<p>Quando trabalhamos em um grande projeto, pode haver a possibilidade de os programadores darem os mesmos nomes a classes, fun\u00e7\u00f5es ou constantes. Por exemplo, se 2 programadores definem a mesma classe A, ent\u00e3o o PHP lan\u00e7a um erro fatal como n\u00e3o pode redeclarar a classe A.<\/p>\n<h3>Definir namespace em PHP<\/h3>\n<p>Para entender quando devemos definir o namespace, escreveremos um trecho de c\u00f3digo.<\/p>\n<p>Digamos que nosso desenvolvedor escreveu um c\u00f3digo abaixo em um arquivo john.php. Este c\u00f3digo \u00e9 apenas um exemplo para explicar os namespaces. Para simplificar, escrevemos fun\u00e7\u00e3o, classe e constantes no mesmo arquivo.<\/p>\n<pre><code>function my_name() {\n\u00a0\u00a0\u00a0\u00a0echo \"John\";\n}\n\u00a0\nclass Programming {\n\u00a0\u00a0\u00a0\u00a0function my_language() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"PHP\";\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\nconst MYCONST = 1;<\/code><\/pre>\n<p>Temos outro desenvolvedor que tamb\u00e9m usou o mesmo nome para classes, fun\u00e7\u00f5es e constantes, mas para finalidades (sa\u00eddas) diferentes. Seu nome de arquivo \u00e9 sam.php.<\/p>\n<pre><code>function my_name() {\n\u00a0\u00a0\u00a0\u00a0echo \"Sam\";\n}\n\u00a0\nclass Programming {\n\u00a0\u00a0\u00a0\u00a0function my_language() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Python\";\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\nconst MYCONST = 2;<\/code><\/pre>\n<p>Agora, quando ambos os arquivos do desenvolvedor forem inclu\u00eddos em nosso projeto, obteremos o erro fatal. O motivo do erro \u00e9 que n\u00e3o podemos usar o mesmo nome duas vezes para uma classe ou m\u00e9todo.<\/p>\n<p>\u00c9 aqui que devemos definir o namespace.<\/p>\n<p>Em ambos os arquivos PHP, podemos definir namespaces como a seguir.<\/p>\n<pre><code>&lt;?php\nnamespace John;\n\u00a0\nfunction my_name() {\n\u00a0\u00a0\u00a0\u00a0echo \"John\";\n}\n\u00a0\nclass Programming {\n\u00a0\u00a0\u00a0\u00a0function my_language() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"PHP\";\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\nconst MYCONST = 1;\n?&gt;<\/code><\/pre>\n<p>E<\/p>\n<pre><code>&lt;?php\nnamespace Sam;\n\u00a0\nfunction my_name() {\n\u00a0\u00a0\u00a0\u00a0echo \"Sam\";\n}\n\u00a0\nclass Programming {\n\u00a0\u00a0\u00a0\u00a0function my_language() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Python\";\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\nconst MYCONST = 2;\n?&gt;<\/code><\/pre>\n<p>Depois de adicionarmos namespaces aos arquivos acima, os erros de PHP desaparecer\u00e3o.<\/p>\n<h3>Usando namespaces<\/h3>\n<p>Neste est\u00e1gio, conclu\u00edmos a defini\u00e7\u00e3o de namespaces. A pr\u00f3xima etapa \u00e9 como usar namespaces em PHP.<\/p>\n<p>Para usar o m\u00e9todo, classe e constantes de ambos os programadores, precisamos escrever um c\u00f3digo como segue.<\/p>\n<pre><code>&lt;?php\nrequire_once('john.php');\nrequire_once('sam.php');\n\u00a0\nSammy_name();\u00a0 \/\/output \"Sam\"\nJohnmy_name(); \/\/output \"John\"\n\u00a0\n$a = new SamProgramming();\n$a-&gt;my_language();\u00a0\u00a0 \/\/output \"Python\"\n\u00a0\n$b = new JohnProgramming();\n$b-&gt;my_language();\u00a0\u00a0 \/\/output \"John\"\n\u00a0\n\u00a0\necho JohnMYCONST;\u00a0 \/\/output \"1\"\necho SamMYCONST;\u00a0\u00a0 \/\/output \"2\"\n?&gt;<\/code><\/pre>\n<p>Para acessar classes ou m\u00e9todos, temos que acrescentar o nome do namespace antes dele.<\/p>\n<p>Esperamos que voc\u00ea entenda como usar o namespace em PHP. Se voc\u00ea tiver alguma d\u00favida ou sugest\u00e3o, por favor, deixe um coment\u00e1rio abaixo.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quer saber como usar o namespace em PHP? Os namespaces s\u00e3o usados \u200b\u200bpara evitar conflitos de nomenclatura entre classes e m\u00e9todos. Neste artigo, estudamos o namespace PHP<\/p>\n","protected":false},"author":1,"featured_media":21909,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[278],"tags":[848],"class_list":["post-26680","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/26680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=26680"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/26680\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=26680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=26680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=26680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}