{"id":402,"date":"2009-09-17T13:45:20","date_gmt":"2009-09-17T15:45:20","guid":{"rendered":"https:\/\/www.kadunew.com\/blog\/?p=402"},"modified":"2009-09-18T17:00:25","modified_gmt":"2009-09-18T19:00:25","slug":"encapsulamento-e-visibilidade","status":"publish","type":"post","link":"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade","title":{"rendered":"Encapsulamento e visibilidade -PHP (parte I)"},"content":{"rendered":"<h4>Encapsulamento:<\/h4>\n<p>O encapsulamento \u00e9 o ato de voc\u00ea prov\u00ea uma prote\u00e7\u00e3o de acesso aos membros internos de um objeto. A classe \u00e9 respons\u00e1vel por seus atributos, e dessa forma podemos acessar esses atributos apenas com m\u00e9todos da pr\u00f3pria classe, ou seja, criamos m\u00e9todos dentro dessa classe para alterar os atributos. Os atributos (propriedades) nunca devem ser acessadas de fora da classe, pois assim temos uma seguran\u00e7a maior sobre seus valores.<br \/>\nPara trabalharmos com o encapsulamento devemos entender como funciona a visibilidade dos atributos e m\u00e9todos de um objeto.<\/p>\n<h4>Visibilidade<\/h4>\n<p>No PHP existem tr\u00eas tipos de visibilidade<br \/>\n<strong>private:<\/strong> Atributos ou m\u00e9todos declarados como private s\u00f3 podem ser acessados dentro do escopo da pr\u00f3pria classe em que foram declarados. Ou seja, n\u00e3o podemos acessar a partir de outras classes descendentes. Essa visibilidade \u00e9 muito comum em atributos e raro em m\u00e9todos. Na UML representamos o private com um sinal de subtra\u00e7\u00e3o (-)<br \/>\n<!--more Continuar lendo--><br \/>\n<strong>protected: <\/strong>Atributos ou m\u00e9todos declarados com protected somente podem ser acessadas dentro da pr\u00f3pria classe ou a partir de classes descendentes (herdadas). Na UML representamos essa visibilidade atrav\u00e9s do sinal de sustenido (#).<\/p>\n<p><strong>public:<\/strong> Atributos ou m\u00e9todos como public podem ser acessados de forma livre, a partir da pr\u00f3pria classe, a partir de classes descendentes e a partir de programas que fazem uso dessa classe. Na UML usamos o sinal de adi\u00e7\u00e3o (+) para representar a visibilidade public.<br \/>\nSe n\u00e3o declaramos visibilidade em membros (atributos e m\u00e9todos) de uma classe automaticamente Ser\u00e1 do tipo public.<br \/>\n\u2003<br \/>\n<strong>Testando na pr\u00e1tica:<\/strong><br \/>\nCriando a classe funcionario.class.php<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;\r\n?php\r\nclass funcionario\r\n{\r\n\tprivate $Codigo;\r\n\tprivate $Nome;\r\n\tprivate $Salario;\r\n}\r\n?&gt;\r\n<\/pre>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;\r\n?php\r\n\r\n\/\/arquivo testa-private.php\r\n\/\/carregando a classe funcionario \r\ninclude_once&#039;funcionario.class.php&#039;;\r\n\r\n$marcos = new funcionario;\r\n$marcos-&gt;Salario = 1.000;\r\necho &quot;teste&quot;;\r\n\r\n?&gt;\r\n<\/pre>\n<p><strong>Veja o erro mostrado pelo PHP:<\/strong><\/p>\n<div class=\"obs\">Fatal error: Cannot access private property funcionario::$Salario in D:\\xampp\\htdocs\\wordpress\\artigos\\PHP\\encapsulamento_e_visibilidade\\testa-private.php on line 7\n<\/div>\n<p>Isso porque tentamos alterar um atributo com a visibilidade igual a private. Para conseguir modificar esse atributo vamos criar um m\u00e9todo para isso. Veja o complemento do arquivo funcion\u00e1rio.class.php<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;\r\n?php\r\nclass funcionario\r\n{\r\n\tprivate $Codigo;\r\n\tprivate $Nome;\r\n\tprivate $Salario;\r\n\t\/\/fun\u00e7\u00e3o para \u201csetar\u201d um valor no atributo salario\r\n\tfunction SetSalario($Salario)\r\n\t{\r\n\t\t\/\/antes de passar o valor do salario verificamos se o mesmo e um numero e positivo, se sim, passamos o valor para o atributo\r\n\t\tif (is_numeric($Salario) and ($Salario &gt; 0))\r\n\t\t{\r\n\t\t\t$this-&gt;Salario = $Salario;\r\n\t\t}\r\n\t}\r\n\t\/\/funcao para mostrar o salario\r\n\tfunction GetSalario()\r\n\t{\r\n\t\techo &quot;O sal\u00e1rio \u00e9: {$this-&gt;Salario}&quot;;\r\n\r\n\t}\r\n}\r\n?&gt;\r\n<\/pre>\n<p>Na pr\u00f3xima mat\u00e9ria vamos ver a visibilidade <a href=\"https:\/\/www.kadunew.com\/blog\/?p=407\">protected<\/a>. At\u00e9 l\u00e1!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Encapsulamento: O encapsulamento \u00e9 o ato de voc\u00ea prov\u00ea uma prote\u00e7\u00e3o de acesso aos membros internos de um objeto. A classe \u00e9 respons\u00e1vel por seus atributos, e dessa forma podemos acessar esses atributos apenas com m\u00e9todos da pr\u00f3pria classe, ou seja, criamos m\u00e9todos dentro dessa classe para alterar os atributos. Os atributos (propriedades) nunca devem [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[54],"tags":[24],"class_list":["post-402","post","type-post","status-publish","format-standard","hentry","category-php","tag-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Encapsulamento e visibilidade -PHP (parte I)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Encapsulamento e visibilidade -PHP (parte I)\" \/>\n<meta property=\"og:description\" content=\"Encapsulamento: O encapsulamento \u00e9 o ato de voc\u00ea prov\u00ea uma prote\u00e7\u00e3o de acesso aos membros internos de um objeto. A classe \u00e9 respons\u00e1vel por seus atributos, e dessa forma podemos acessar esses atributos apenas com m\u00e9todos da pr\u00f3pria classe, ou seja, criamos m\u00e9todos dentro dessa classe para alterar os atributos. Os atributos (propriedades) nunca devem [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade\" \/>\n<meta property=\"og:site_name\" content=\"KADUNEW\" \/>\n<meta property=\"article:published_time\" content=\"2009-09-17T15:45:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2009-09-18T19:00:25+00:00\" \/>\n<meta name=\"author\" content=\"Kadu Oliveira\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kadu Oliveira\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade\",\"url\":\"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade\",\"name\":\"Encapsulamento e visibilidade -PHP (parte I)\",\"isPartOf\":{\"@id\":\"https:\/\/www.kadunew.com\/blog\/#website\"},\"datePublished\":\"2009-09-17T15:45:20+00:00\",\"dateModified\":\"2009-09-18T19:00:25+00:00\",\"author\":{\"@id\":\"https:\/\/www.kadunew.com\/blog\/#\/schema\/person\/07b2297c4825efbd1e9f2a1018926b05\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.kadunew.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP\",\"item\":\"https:\/\/www.kadunew.com\/blog\/category\/php\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Encapsulamento e visibilidade -PHP (parte I)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kadunew.com\/blog\/#website\",\"url\":\"https:\/\/www.kadunew.com\/blog\/\",\"name\":\"KADUNEW\",\"description\":\"Artigos sobre Front-End e Programa\u00e7\u00e3o web\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kadunew.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.kadunew.com\/blog\/#\/schema\/person\/07b2297c4825efbd1e9f2a1018926b05\",\"name\":\"Kadu Oliveira\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.kadunew.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/780660fded589936b30467c54c99d51a?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/780660fded589936b30467c54c99d51a?s=96&r=g\",\"caption\":\"Kadu Oliveira\"},\"sameAs\":[\"https:\/\/www.kadunew.com\/blog\"],\"url\":\"https:\/\/www.kadunew.com\/blog\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Encapsulamento e visibilidade -PHP (parte I)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade","og_locale":"pt_BR","og_type":"article","og_title":"Encapsulamento e visibilidade -PHP (parte I)","og_description":"Encapsulamento: O encapsulamento \u00e9 o ato de voc\u00ea prov\u00ea uma prote\u00e7\u00e3o de acesso aos membros internos de um objeto. A classe \u00e9 respons\u00e1vel por seus atributos, e dessa forma podemos acessar esses atributos apenas com m\u00e9todos da pr\u00f3pria classe, ou seja, criamos m\u00e9todos dentro dessa classe para alterar os atributos. Os atributos (propriedades) nunca devem [&hellip;]","og_url":"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade","og_site_name":"KADUNEW","article_published_time":"2009-09-17T15:45:20+00:00","article_modified_time":"2009-09-18T19:00:25+00:00","author":"Kadu Oliveira","twitter_misc":{"Escrito por":"Kadu Oliveira","Est. tempo de leitura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade","url":"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade","name":"Encapsulamento e visibilidade -PHP (parte I)","isPartOf":{"@id":"https:\/\/www.kadunew.com\/blog\/#website"},"datePublished":"2009-09-17T15:45:20+00:00","dateModified":"2009-09-18T19:00:25+00:00","author":{"@id":"https:\/\/www.kadunew.com\/blog\/#\/schema\/person\/07b2297c4825efbd1e9f2a1018926b05"},"breadcrumb":{"@id":"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.kadunew.com\/blog\/php\/encapsulamento-e-visibilidade#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kadunew.com\/blog"},{"@type":"ListItem","position":2,"name":"PHP","item":"https:\/\/www.kadunew.com\/blog\/category\/php"},{"@type":"ListItem","position":3,"name":"Encapsulamento e visibilidade -PHP (parte I)"}]},{"@type":"WebSite","@id":"https:\/\/www.kadunew.com\/blog\/#website","url":"https:\/\/www.kadunew.com\/blog\/","name":"KADUNEW","description":"Artigos sobre Front-End e Programa\u00e7\u00e3o web","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kadunew.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.kadunew.com\/blog\/#\/schema\/person\/07b2297c4825efbd1e9f2a1018926b05","name":"Kadu Oliveira","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.kadunew.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/780660fded589936b30467c54c99d51a?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/780660fded589936b30467c54c99d51a?s=96&r=g","caption":"Kadu Oliveira"},"sameAs":["https:\/\/www.kadunew.com\/blog"],"url":"https:\/\/www.kadunew.com\/blog\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/posts\/402"}],"collection":[{"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/comments?post=402"}],"version-history":[{"count":4,"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/posts\/402\/revisions"}],"predecessor-version":[{"id":404,"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/posts\/402\/revisions\/404"}],"wp:attachment":[{"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/media?parent=402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/categories?post=402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kadunew.com\/blog\/wp-json\/wp\/v2\/tags?post=402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}