{"id":348,"date":"2012-05-21T09:12:25","date_gmt":"2012-05-21T12:12:25","guid":{"rendered":"http:\/\/www.agenciadewebsites.com.br\/?p=348"},"modified":"2012-05-21T09:14:21","modified_gmt":"2012-05-21T12:14:21","slug":"poo-visibilidade-de-atributos-de-metodos","status":"publish","type":"post","link":"https:\/\/www.agenciadewebsites.com.br\/?p=348","title":{"rendered":"POO &#8211; Visibilidade de Atributos de M\u00e9todos"},"content":{"rendered":"<div id=\"fb_share_1\" style=\"float: right; margin-left: 10px;\"><a name=\"fb_share\" type=\"box_count\" share_url=\"https:\/\/www.agenciadewebsites.com.br\/?p=348\" href=\"http:\/\/www.facebook.com\/sharer.php\">Share<\/a><\/div>\n<div><script src=\"http:\/\/static.ak.fbcdn.net\/connect.php\/js\/FB.Share\" type=\"text\/javascript\"><\/script><\/div>\n<p>O meu objetivo aqui n\u00e3o \u00e9 ensinar como se programa orienta a objeto de um mode geral, e sim, como se usa a sitaxe da linguagem PHP.<\/p>\n<p>As visibilidade dispon\u00edveis s\u00e3o<strong> privativo (private)<\/strong>,\u00a0 <strong>p\u00fablicos(public)<\/strong> e <strong>protegidos(protect)<\/strong>, eles definem como\u00a0o\u00a0atributo ou m\u00e9todo\u00a0se comporta dentro do meu programa.<\/p>\n<p><strong>Modificador\u00a0Public<\/strong><br \/>\nQuando voc\u00ea define um m\u00e9todo ou atributo como p\u00fablico, voc\u00ea est\u00e1 liberando o acesso a ele de qualquer lugar que contenha a classe.<br \/>\nEx:<\/p>\n<table width=\"352\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\" bgcolor=\"#F8F8F8\">\n<tbody>\n<tr>\n<td><span style=\"font-family: Courier New; font-size: x-small;\">&lt;?php<br \/>\n<span style=\"color: #0000ff;\">class<\/span> carro<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">public<\/span> $modelo;<br \/>\n<span style=\"color: #0000ff;\">public<\/span> function setModelo($_model)<br \/>\n{<br \/>\n$<span style=\"color: #0000ff;\">this-&gt;<\/span>modelo = $_model;<br \/>\n}<br \/>\n}<br \/>\n$objeto = <span style=\"color: #0000ff;\">new<\/span> carro;<br \/>\n$objeto-&gt;setModelo(&#8220;GOLF&#8221;);<br \/>\n$modelo = &#8220;CHALERA&#8221;;<br \/>\n?&gt;<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Observe que eu consigo mudar o valor do atributo de fora da classe.<\/p>\n<p><strong>Modificador\u00a0Protected<\/strong><br \/>\nEsse modificador restringe o acesso de fora da classe, por\u00e9m ele ainda \u00e9 acess\u00edvel de suas subclasses, ou seja, as classes que herdaram os atributos dela.<\/p>\n<table width=\"352\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\" bgcolor=\"#F8F8F8\">\n<tbody>\n<tr>\n<td><span style=\"font-family: Courier New; font-size: x-small;\">&lt;?php<br \/>\n<span style=\"color: #0000ff;\">class<\/span> carro<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">protected<\/span> $modelo;<br \/>\n<span style=\"color: #0000ff;\">protected<\/span> function setModelo($_model)<br \/>\n{<br \/>\n$<span style=\"color: #0000ff;\">this-&gt;<\/span>modelo = $_model;<br \/>\n}<br \/>\n}<br \/>\n<span style=\"color: #0000ff;\">class<\/span> caminhao <span style=\"color: #0000ff;\">extends<\/span> carro<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">public<\/span> function setModelo($_mo)<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">parent::<\/span>modelo = $_mo;<em><span style=\"color: #009900;\">\/\/n\u00e3o da erro<br \/>\n<\/span><\/em>\u00a0\u00a0 }<br \/>\n}<br \/>\n$objeto = <span style=\"color: #0000ff;\">new<\/span> carro;<br \/>\n$objeto-&gt;setModelo(&#8220;GOLF&#8221;);<em><span style=\"color: #009900;\">\/\/causa erro<\/span><\/em><br \/>\n$modelo = &#8220;CHALERA&#8221;;<em><span style=\"color: #009900;\">\/\/<\/span><span style=\"color: #009900;\">causa um erro<\/span><\/em><br \/>\n?&gt;<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Consigo acessar de dentro das sub classes, mas de fora das classes, eu n\u00e3o tenho acesso.<\/p>\n<p><strong>Modificador Private<br \/>\n<\/strong>Esse modificador \u00e9 mais restritivo, s\u00f3 da permiss\u00e3o de acesso a sua pr\u00f3pria classe, em nenhum outro lugar eu posso acess\u00e1-la.<\/p>\n<table width=\"352\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\" bgcolor=\"#F8F8F8\">\n<tbody>\n<tr>\n<td><span style=\"font-family: Courier New; font-size: x-small;\">&lt;?php<br \/>\n<span style=\"color: #0000ff;\">class<\/span> carro<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">private<\/span> $modelo;<br \/>\n<span style=\"color: #0000ff;\">private<\/span> function setModelo($_model)<br \/>\n{<br \/>\n$<span style=\"color: #0000ff;\">this-&gt;<\/span>modelo = $_model;<br \/>\n}<br \/>\n}<br \/>\n<span style=\"color: #0000ff;\">class<\/span> caminhao <span style=\"color: #0000ff;\">extends<\/span> carro<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">public<\/span> function setModelo($_mo)<br \/>\n{<br \/>\n<span style=\"color: #0000ff;\">parent::<\/span>modelo = $_mo;<em><span style=\"color: #009900;\">\/\/causa erro<\/span><\/em><br \/>\n}<br \/>\n}<br \/>\n$objeto = <span style=\"color: #0000ff;\">new<\/span> carro;<br \/>\n$objeto-&gt;setModelo(&#8220;GOLF&#8221;);<em><span style=\"color: #009900;\">\/\/causa erro<\/span><\/em><br \/>\n$modelo = &#8220;CHALERA&#8221;;<em><span style=\"color: #009900;\">\/\/<\/span><span style=\"color: #009900;\">causa um erro<\/span><\/em><br \/>\n?&gt;<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Agora ele n\u00e3o permitiu modificar fora de sua pr\u00f3pria classe, nem das que a herdam pode acess\u00e1-la.<\/p>\n<p>Quanto a que visibilidade que eu devo definir, fica a crit\u00e9rio do programador e do analista, veja sua necessidade, para que seu c\u00f3digo n\u00e3o possa lhe dar dor de cabe\u00e7a.<\/p>\n<p><strong>Fonte: <\/strong>Plugmasters &#8211;\u00a0Thiago Victorino<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Share O meu objetivo aqui n\u00e3o \u00e9 ensinar como se programa orienta a objeto de um mode geral, e sim, como se usa a sitaxe da linguagem PHP. As visibilidade dispon\u00edveis s\u00e3o privativo (private),\u00a0 p\u00fablicos(public) e protegidos(protect), eles definem como\u00a0o\u00a0atributo ou m\u00e9todo\u00a0se comporta dentro do meu programa. Modificador\u00a0Public Quando voc\u00ea define um m\u00e9todo ou atributo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[27,28,29],"_links":{"self":[{"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=\/wp\/v2\/posts\/348"}],"collection":[{"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=348"}],"version-history":[{"count":2,"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions"}],"predecessor-version":[{"id":350,"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions\/350"}],"wp:attachment":[{"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.agenciadewebsites.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}