<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KADUNEW.COM/BLOG &#187; PHP</title>
	<atom:link href="http://www.kadunew.com/blog/category/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kadunew.com/blog</link>
	<description>Tutoriais, Dicas e Artigos sobre Web Design, Web Standards, CSS, HTML, SEO e Programação web.</description>
	<lastBuildDate>Wed, 01 Feb 2012 15:18:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Função PHP para gerar senhas aleatórias</title>
		<link>http://www.kadunew.com/blog/php/funcao-php-para-gerar-senhas-aleatorias</link>
		<comments>http://www.kadunew.com/blog/php/funcao-php-para-gerar-senhas-aleatorias#comments</comments>
		<pubDate>Wed, 06 Apr 2011 00:41:04 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=2145</guid>
		<description><![CDATA[Hoje vou mostrar uma função em PHP para gerar senhas aleatórias complexas. Você pode escolher o tamanho da senha e sua força. A senha pode ser composta por números, letras ou símbolos. Para isso é só mudar o valor do parâmetro da função. A função gera uma senha de acordo com dois parâmetros: tamanho e [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje vou mostrar uma <strong>função em PHP para gerar senhas aleatórias</strong> complexas. Você pode escolher o tamanho da senha e sua força. A senha pode ser composta por números, letras ou símbolos. Para isso é só mudar o valor do parâmetro da função. A função gera uma senha de acordo com dois parâmetros:<strong> tamanho e força</strong> .<br />
<span id="more-2145"></span></p>
<pre class="syntax-highlight:php">
function gerarSenha($tamanho=9, $forca=0) {
	$vogais = &#039;aeuy&#039;;
	$consoantes = &#039;bdghjmnpqrstvz&#039;;
	if ($forca &gt;= 1) {
		$consoantes .= &#039;BDGHJLMNPQRSTVWXZ&#039;;
	}
	if ($forca &gt;= 2) {
		$vogais .= &quot;AEUY&quot;;
	}
	if ($forca &gt;= 4) {
		$consoantes .= &#039;23456789&#039;;
	}
	if ($forca &gt;= 8 ) {
		$vogais .= &#039;@#$%&#039;;
	}

	$senha = &#039;&#039;;
	$alt = time() % 2;
	for ($i = 0; $i &lt; $tamanho; $i++) {
		if ($alt == 1) {
			$senha .= $consoantes[(rand() % strlen($consoantes))];
			$alt = 0;
		} else {
			$senha .= $vogais[(rand() % strlen($vogais))];
			$alt = 1;
		}
	}
	return $senha;
}
</pre>
<p>Agora basta chamar a função, conforme mostrado abaixo. A função aceita dois parâmetros, $tamanho, que nada mais é que o tamanho desejado da senha, e $forca, a força desejada da senha.</p>
<pre class="syntax-highlight:php">
echo &#039;Sua senha é &lt;strong&gt;&#039;.gerarSenha(10,8).&#039;&lt;/strong&gt;&#039;;
</pre>
<p>Link original do artigo: <a href="http://www.phpsnippets.info/generate-a-password-in-php">Generate a password in php</a>.</p>
<p>Me siga no Twitter: <a href="http://twitter.com/kadunew" rel="nofollow">@kadunew</a> ou assine nosso <a href="feed://http//www.kadunew.com/blog/feed">Feed</a> e fique por dentro de todas atualizações aqui do blog.<br />
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li>Nenhum post relacionado</li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=2145&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/funcao-php-para-gerar-senhas-aleatorias/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Método construtor do PHP</title>
		<link>http://www.kadunew.com/blog/php/metodo-construtor-do-php</link>
		<comments>http://www.kadunew.com/blog/php/metodo-construtor-do-php#comments</comments>
		<pubDate>Wed, 02 Mar 2011 12:23:12 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=2085</guid>
		<description><![CDATA[O método construtor de uma classe sempre é executando quando um objeto da classe é instanciado. É um tipo especial de função do PHP. Normalmente o programador utiliza o método construtor para inicializar os atributos de um objeto, como por exemplo: Estabelecer conexão com um banco de dados, abertura de um arquivo que será utilizado [...]]]></description>
			<content:encoded><![CDATA[<p><strong>O método construtor de uma classe sempre é executando quando um objeto da classe é instanciado</strong>. É um tipo especial de função do PHP. Normalmente o programador utiliza o <strong>método construtor</strong> para inicializar os atributos de um objeto, como por exemplo: Estabelecer conexão com um banco de dados, abertura de um arquivo que será utilizado para escrita de log, etc.<br />
<span id="more-2085"></span><br />
<strong>O que você deve saber sobre o método construtor:</strong><br />
<code>
<div class="obs"></code>
<ul>
<li>O método construtor define os valores iniciais dos atributos de um objeto;</li>
<li>Construtores são funções, logo aceitam passagem de parâmetros;</li>
<li>Diferente de outras linguagens o PHP aceita apenas um construtor.</li>
</ul>
</div>
<p>Caso o programador não defina um método construtor para a classe, automaticamente ao instanciar um objeto seus atributos serão inicializados com o valor <code>NULL</code>.</p>
<p>Antes da versão PHP5 por convenção o construtor era um <strong>método que tinha o mesmo nome da classe</strong>. A partir da versão 5 do PHP podemos definir o método construtor da forma antiga ou usar o método a seguir (<strong>atenção para os dois underscore</strong>):</p>
<div class="obs">
<code>__construct()</code>
</div>
<p>Sempre que você quiser fazer alguma coisa na inicialização da classe, terá que usar esse método. O método <strong>construtor do PHP</strong> é executado logo que a linha abaixo é executada.</p>
<div class="obs">
<code>$pessoa1=new Pessoa();</code>
</div>
<p><strong>Abaixo a forma antiga e a forma mais atual de declarar o método construtor:</strong></p>
<pre class="syntax-highlight:php">
class Pessoa
{
   function Pessoa() // Versão do PHP 4 e opcional para o PHP 5
  {
     echo &quot;Olá, tudo bem com você&quot;;
   }
  function __construct() // PHP5
 {
   echo &quot;Olá, tudo bem com você&quot;;
 }
}
</pre>
<p>No artigo vou utilizar a função (ou método) <code>__construct</code>.</p>
<h2>Passando parâmetros para o método construtor</h2>
<p>No momento da criação do nosso objeto podemos passar valores fixos, e também variáveis.</p>
<pre class="syntax-highlight:php">
class Pessoa
{
  function __construct($name)
 {
   echo &quot;Olá &quot;.$name.&quot; Tudo bem?&quot;;
 }
}
</pre>
<p>Agora ao criar nosso objeto devemos passar como parâmetro o nome da pessoa. Veja o exemplo:</p>
<div class="obs">
<code>$pessoa=new Pessoa('Antenor');</code>
</div>
<p><strong>Utilizando o método construtor podemos passar mais de um parâmetro:</strong></p>
<pre class="syntax-highlight:php">
class Pessoa
{
  function __construct($nome, $idade)
 {
   echo &quot;A pessoa se chama &quot;.$nome.&quot;e sua idade é: &quot;.$idade;
 }
}
</pre>
<p>Nesse exemplo passamos como parâmetro o nome e a idade da pessoa no momento que instanciamos nosso objeto.</p>
<div class="obs">
<code>$pessoa1=new Pessoa('Antenor',’26’);</code>
</div>
<h2>Método destrutor</h2>
<p>Ao falarmos de método construtor não podemos deixar de falar, mesmo que brevemente, sobre o método destrutor do PHP.</p>
<p>O método <code>__destruct()</code> funciona como um finalizador e, é executado ao finalizarmos um objeto, ou seja, quando o objeto é desalocado da memória, quando atribuímos <code>NULL</code> ao objeto, quando usamos a função unset() no objeto, ou também quando o programa é fechado.</p>
<pre class="syntax-highlight:php">
function __destruct()
{
echo “Objeto finalizado”;
}
</pre>
<p>Toda classe tem duas funções especiais, e são elas, construtor e destruidor. Mesmo se você não declarar explicitamente e defini-las, elas existem. </p>
<p>GRANDE abraço à todos e até o próximo artigo. <img src='http://www.kadunew.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Me siga no Twitter: <a href="http://twitter.com/kadunew" rel="nofollow">@kadunew</a><br />
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li><a href="http://www.kadunew.com/blog/php/smarty-php-template" title="Vídeo aula: Introdução ao Smarty php Template">Vídeo aula: Introdução ao Smarty php Template</a></li>
<li><a href="http://www.kadunew.com/blog/php/funcao-autoload-no-php" title="Função autoload no PHP">Função autoload no PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii" title="Encapsulamento e visibilidade -PHP (parte III)">Encapsulamento e visibilidade -PHP (parte III)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii" title="Encapsulamento e visibilidade -PHP (parte II)">Encapsulamento e visibilidade -PHP (parte II)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade" title="Encapsulamento e visibilidade -PHP (parte I)">Encapsulamento e visibilidade -PHP (parte I)</a></li>
<li><a href="http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes" title="Introdução PHP orientado a objetos &#8211; objetos e classes">Introdução PHP orientado a objetos &#8211; objetos e classes</a></li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=2085&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/metodo-construtor-do-php/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Vídeo aula: Introdução ao Smarty php Template</title>
		<link>http://www.kadunew.com/blog/php/smarty-php-template</link>
		<comments>http://www.kadunew.com/blog/php/smarty-php-template#comments</comments>
		<pubDate>Thu, 18 Mar 2010 04:08:39 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=801</guid>
		<description><![CDATA[O que é o Smarty?
Smarty é uma biblioteca PHP com classes de templates. Ela propõe uma separação das linguagens envolvidas no desenvolvimento WEB, nesse caso o PHP e o HTML. O objetivo é isolar em arquivos distintos a regra do negócio, processamentos, lógica de programação, etc, do código responsável por fazer a marcação, ou seja, [...]]]></description>
			<content:encoded><![CDATA[<h3>O que é o Smarty?</h3>
<p><strong>Smarty é uma biblioteca PHP</strong> com classes de templates. Ela propõe uma separação das linguagens envolvidas no desenvolvimento WEB, nesse caso o PHP e o HTML. O objetivo é isolar em arquivos distintos a regra do negócio, processamentos, lógica de programação, etc, do código responsável por fazer a marcação, ou seja, o código HTML.</p>
<p>Assista nessa vídeo aula <strong>como instalar o Smarty</strong>, e um pequeno exemplo de sua utilização.<br />
<span id="more-801"></span></p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10230706&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10230706&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
<p><a href="http://www.kadunew.com/blog/aula.zip">Download</a> dos arquivos utilizados na Vídeo Aula.<br />
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li><a href="http://www.kadunew.com/blog/php/metodo-construtor-do-php" title="Método construtor do PHP">Método construtor do PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/funcao-autoload-no-php" title="Função autoload no PHP">Função autoload no PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii" title="Encapsulamento e visibilidade -PHP (parte III)">Encapsulamento e visibilidade -PHP (parte III)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii" title="Encapsulamento e visibilidade -PHP (parte II)">Encapsulamento e visibilidade -PHP (parte II)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade" title="Encapsulamento e visibilidade -PHP (parte I)">Encapsulamento e visibilidade -PHP (parte I)</a></li>
<li><a href="http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes" title="Introdução PHP orientado a objetos &#8211; objetos e classes">Introdução PHP orientado a objetos &#8211; objetos e classes</a></li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=801&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/smarty-php-template/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Função autoload no PHP</title>
		<link>http://www.kadunew.com/blog/php/funcao-autoload-no-php</link>
		<comments>http://www.kadunew.com/blog/php/funcao-autoload-no-php#comments</comments>
		<pubDate>Sun, 25 Oct 2009 20:07:17 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=474</guid>
		<description><![CDATA[A função autoload é utilizada no PHP para fazer o carregamento automático das classes.
Sempre que desejarmos criar um objeto, temos que ter obrigatoriamente a classe responsável pela criação do objeto carregada na memória, caso contrário o PHP retornará um erro. Para carregar classes na memória podemos carregar todas as classes no inicio do documento utilizando [...]]]></description>
			<content:encoded><![CDATA[<p>A função <em>autoload </em>é utilizada no PHP para fazer o carregamento automático das classes.</p>
<p>Sempre que desejarmos criar um objeto, temos que ter obrigatoriamente a classe responsável pela criação do objeto carregada na memória, caso contrário o PHP retornará um erro. Para carregar classes na memória podemos carregar todas as classes no inicio do documento utilizando o comando <em>include_once</em> ou com o mesmo comando imediatamente antes de instanciar um objeto.</p>
<p><span id="more-474"></span></p>
<div class="pullquote">A função autoload é utilizada no PHP para fazer o carregamento automático das classes</div>
<p>O grande problema é que o <em>include_once</em> carrega na memória as classes mesmo que você não use. Muitas vezes uma classe só é utilizada se o usuário fizer alguma requisição no sistema, um determinado passo, ou se o usuário der um clique em um botão, etc. Para resolver e simplificar tal procedimento o PHP disponibiliza a função de &#8220;carregamento automático&#8221;, que é a função <em>autoload</em>, que carrega a classe apenas quando um objeto dessa classe for criada, tornando o processo de carregamento das classes para a memória dinâmico.</p>
<p>Veja abaixo um exemplo simples:<br />
<strong>classe funcionario</strong></p>
<pre class="syntax-highlight:php">
&lt; ? php
class Funcionario
{
    private $Codigo;
    private $Nome;
    private $Salario;
    //função para “setar” um valor no atributo salario
    function SetSalario($Salario)
    {
        //antes de passar o valor do salario verificamos se o mesmo e um numero e positivo, se sim, passamos o valor para o atributo
        if (is_numeric($Salario) and ($Salario &gt; 0))
        {
            $this-&gt;Salario = $Salario;
        }
    }

    function SetNome($Nome)
    {
    	$this-&gt;Nome = $Nome;
    }

    function SetCodigo($Codigo)
    {
    	$this-&gt;Codigo = $Codigo;
    }

    function Mostrar()
    {
    echo &quot;O nome é: {$this-&gt;Nome}&lt;br&gt;&quot;;
    echo &quot;O salário é: R\$ {$this-&gt;Salario}&lt;br&gt;&quot;;
    echo &quot;O Código é: {$this-&gt;Codigo}&quot;;
    }

}
?&gt;
</pre>
<p><strong>arquivo autoload</strong></p>
<pre class="syntax-highlight:php">
&lt; ? php
// funcao que carrega as classes automaticamente
function __autoload($classe)
{
	//busca dentro da pasta classes a classe necessaria...
	include_once &quot;classes/{$classe}.class.php&quot;;
}

//criando um objeto pessoa
$funcionario = new Funcionario();
$funcionario -&gt; SetCodigo(789);
$funcionario -&gt; SetNome (&#039;Mario Andrade&#039;);
$funcionario -&gt; SetSalario (2500);
$funcionario -&gt; Mostrar();
?&gt;
</pre>
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li><a href="http://www.kadunew.com/blog/php/metodo-construtor-do-php" title="Método construtor do PHP">Método construtor do PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/smarty-php-template" title="Vídeo aula: Introdução ao Smarty php Template">Vídeo aula: Introdução ao Smarty php Template</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii" title="Encapsulamento e visibilidade -PHP (parte III)">Encapsulamento e visibilidade -PHP (parte III)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii" title="Encapsulamento e visibilidade -PHP (parte II)">Encapsulamento e visibilidade -PHP (parte II)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade" title="Encapsulamento e visibilidade -PHP (parte I)">Encapsulamento e visibilidade -PHP (parte I)</a></li>
<li><a href="http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes" title="Introdução PHP orientado a objetos &#8211; objetos e classes">Introdução PHP orientado a objetos &#8211; objetos e classes</a></li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=474&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/funcao-autoload-no-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encapsulamento e visibilidade -PHP (parte III)</title>
		<link>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii</link>
		<comments>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii#comments</comments>
		<pubDate>Thu, 24 Sep 2009 11:44:07 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=417</guid>
		<description><![CDATA[Nesse último artigo sobre Encapsulamento e visibilidade, vou mostrar a visibilidade public. A visibilidade mais simples de demonstrar é sem dúvida a public. Se não especificarmos uma visibilidade aos nossos métodos e propriedades por padrão o PHP adota a public como sendo a padrão.
Para demonstrar o exemplo veja que temos uma super classe chamada de [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse último artigo sobre<em> Encapsulamento e visibilidad</em>e, vou mostrar a visibilidade <strong>public</strong>. A visibilidade mais simples de demonstrar é sem dúvida a public. Se não especificarmos uma visibilidade aos nossos métodos e propriedades por padrão o PHP adota a public como sendo a padrão.<br />
Para demonstrar o exemplo veja que temos uma super classe chamada de Pessoa e uma classe mais específica chamada de funcionário. Como os atributos estão com visibilidade igual a public podemos alterá-las livremente, sem a necessidade de métodos para isso. Lembrando que essa prática não PE recomendada na maioria dos projetos, pois assim não temos mais um controle de quem pode acessar a classe.<br />
<span id="more-417"></span></p>
<p><strong>Classe Pessoa</strong></p>
<pre class="syntax-highlight:php">

&lt; ? php
class Pessoa
{
	public $nome;
	public $cidade;
	public $idade;
}
?&gt;
</pre>
<p><strong>Classe Funcionário</strong></p>
<pre class="syntax-highlight:php">
&lt; ? php
class Funcionario extends Pessoa
{
	public $salario;
	public $setor;
}
?&gt;
</pre>
<p><strong>Arquivo public para testar nossas classes</strong></p>
<pre class="syntax-highlight:php">
&lt; ? php
//carrega as classes
include_once&#039;Pessoa.class.php&#039;;
include_once&#039;Funcionario.class.php&#039;;

//criando os objetos pessoa e funcionario
$pessoa = new Pessoa();
$funcionario = new Funcionario();

//as propriedades estao como public. Para modificar
// seu conteudo nao precisamos de metodos
$pessoa-&gt;nome = &quot;Carlos Eduardo&quot;;
$funcionario-&gt;salario = 1000;

//imprime os dados
echo &quot;O nome da pessoa é: {$pessoa-&gt;nome}&lt;br&gt;&quot;;
echo &quot;O salário do funcionário é: {$funcionario-&gt;salario}&quot;;
?&gt;
</pre>
<p>Pessoal então terminamos aqui o artigo sobre Encapsulamento e visibilidade. Espero que tenham gostado.<br />
Abraços.<br />
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li><a href="http://www.kadunew.com/blog/php/metodo-construtor-do-php" title="Método construtor do PHP">Método construtor do PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/smarty-php-template" title="Vídeo aula: Introdução ao Smarty php Template">Vídeo aula: Introdução ao Smarty php Template</a></li>
<li><a href="http://www.kadunew.com/blog/php/funcao-autoload-no-php" title="Função autoload no PHP">Função autoload no PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii" title="Encapsulamento e visibilidade -PHP (parte II)">Encapsulamento e visibilidade -PHP (parte II)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade" title="Encapsulamento e visibilidade -PHP (parte I)">Encapsulamento e visibilidade -PHP (parte I)</a></li>
<li><a href="http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes" title="Introdução PHP orientado a objetos &#8211; objetos e classes">Introdução PHP orientado a objetos &#8211; objetos e classes</a></li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=417&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Encapsulamento e visibilidade -PHP (parte II)</title>
		<link>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii</link>
		<comments>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii#comments</comments>
		<pubDate>Fri, 18 Sep 2009 18:12:17 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=407</guid>
		<description><![CDATA[No artigo anterior vimos o que é encapsulamento e suas vantagens. Vimos também a visibilidade private. Hoje vamos continuar com a visibilidade protected.
protected:
Para explicar como funciona essa visibilidade vamos utilizar uma super classe funcionário e uma classe especifica chamada de professor.
Abaixo o código da classe funcionário.class.php

&#60;
?php
class funcionario
{
    private $Codigo;
    [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="http://www.kadunew.com/blog/?p=402">artigo anterior </a>vimos o que é encapsulamento e suas vantagens. Vimos também a visibilidade private. Hoje vamos continuar com a visibilidade protected.<br />
<strong>protected:</strong><br />
Para explicar como funciona essa visibilidade vamos utilizar uma super classe <em>funcionário</em> e uma classe especifica chamada de <em>professor</em>.<br />
<strong>Abaixo o código da classe funcionário.class.php</strong></p>
<pre class="syntax-highlight:php">
&lt;
?php
class funcionario
{
    private $Codigo;
    private $Nome;
//veja que o atributo salário esta como private.
    private $Salario;
    //função para “setar” um valor no atributo salario
    function SetSalario($Salario)
    {
        //antes de passar o valor do salario verificamos se o mesmo e um numero e positivo, se sim, passamos o valor para o atributo
        if (is_numeric($Salario) and ($Salario &gt; 0))
        {
            $this-&gt;Salario = $Salario;
        }
    }

}
?&gt;
</pre>
<p><span id="more-407"></span><br />
<strong>Abaixo o código da classe professor.class.php</strong></p>
<pre class="syntax-highlight:php">
&lt;
?php
class Professor extends Funcionario
{
	//funcao que mostra o valor do atributo salario, atributo que esta na classe pai
        function GetSalario()
	{
		echo&quot; O valor é: {$this-&gt;Salario}&quot;;
	}
}

?&gt;
</pre>
<p>Observe que estamos estendendo essa classe para a classe funcionário.<br />
E por fim o código do nosso arquivo que testa nossas classes.<br />
<strong>arquivo testa-protected.php.</strong></p>
<pre class="syntax-highlight:php">
&lt;
?php
include_once&#039;Funcionario.class.php&#039;;
include_once&#039;Professor.class.php&#039;;

$professor1 = new Professor();
$professor1-&gt;SetSalario(1000);

$professor1-&gt;GetSalario();
?&gt;</pre>
<p>Depois de executar você verá que não foi mostrado nenhum resultado. Isso porque o atributo salário (da classe funcionário) está como <strong>private</strong>. Se mudarmos para <strong>protected </strong>será retornado o valor do salário. Faça o teste!<br />
Próxima matéria veremos a <a href="http://www.kadunew.com/blog/?p=417">visibilidade public</a>.</p>
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li><a href="http://www.kadunew.com/blog/php/metodo-construtor-do-php" title="Método construtor do PHP">Método construtor do PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/smarty-php-template" title="Vídeo aula: Introdução ao Smarty php Template">Vídeo aula: Introdução ao Smarty php Template</a></li>
<li><a href="http://www.kadunew.com/blog/php/funcao-autoload-no-php" title="Função autoload no PHP">Função autoload no PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii" title="Encapsulamento e visibilidade -PHP (parte III)">Encapsulamento e visibilidade -PHP (parte III)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade" title="Encapsulamento e visibilidade -PHP (parte I)">Encapsulamento e visibilidade -PHP (parte I)</a></li>
<li><a href="http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes" title="Introdução PHP orientado a objetos &#8211; objetos e classes">Introdução PHP orientado a objetos &#8211; objetos e classes</a></li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=407&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Encapsulamento e visibilidade -PHP (parte I)</title>
		<link>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade</link>
		<comments>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade#comments</comments>
		<pubDate>Thu, 17 Sep 2009 15:45:20 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=402</guid>
		<description><![CDATA[Encapsulamento:
O encapsulamento é o ato de você provê uma proteção de acesso aos membros internos de um objeto. A classe é responsável por seus atributos, e dessa forma podemos acessar esses atributos apenas com métodos da própria classe, ou seja, criamos métodos dentro dessa classe para alterar os atributos. Os atributos (propriedades) nunca devem ser [...]]]></description>
			<content:encoded><![CDATA[<h4>Encapsulamento:</h4>
<p>O encapsulamento é o ato de você provê uma proteção de acesso aos membros internos de um objeto. A classe é responsável por seus atributos, e dessa forma podemos acessar esses atributos apenas com métodos da própria classe, ou seja, criamos métodos dentro dessa classe para alterar os atributos. Os atributos (propriedades) nunca devem ser acessadas de fora da classe, pois assim temos uma segurança maior sobre seus valores.<br />
Para trabalharmos com o encapsulamento devemos entender como funciona a visibilidade dos atributos e métodos de um objeto.</p>
<h4>Visibilidade</h4>
<p>No PHP existem três tipos de visibilidade<br />
<strong>private:</strong> Atributos ou métodos declarados como private só podem ser acessados dentro do escopo da própria classe em que foram declarados. Ou seja, não podemos acessar a partir de outras classes descendentes. Essa visibilidade é muito comum em atributos e raro em métodos. Na UML representamos o private com um sinal de subtração (-)<br />
<span id="more-402"></span><br />
<strong>protected: </strong>Atributos ou métodos declarados com protected somente podem ser acessadas dentro da própria classe ou a partir de classes descendentes (herdadas). Na UML representamos essa visibilidade através do sinal de sustenido (#).</p>
<p><strong>public:</strong> Atributos ou métodos como public podem ser acessados de forma livre, a partir da própria classe, a partir de classes descendentes e a partir de programas que fazem uso dessa classe. Na UML usamos o sinal de adição (+) para representar a visibilidade public.<br />
Se não declaramos visibilidade em membros (atributos e métodos) de uma classe automaticamente Será do tipo public.<br />
 <br />
<strong>Testando na prática:</strong><br />
Criando a classe funcionario.class.php</p>
<pre class="syntax-highlight:php">
&lt;
?php
class funcionario
{
	private $Codigo;
	private $Nome;
	private $Salario;
}
?&gt;
</pre>
<pre class="syntax-highlight:php">
&lt;
?php

//arquivo testa-private.php
//carregando a classe funcionario
include_once&#039;funcionario.class.php&#039;;

$marcos = new funcionario;
$marcos-&gt;Salario = 1.000;
echo &quot;teste&quot;;

?&gt;
</pre>
<p><strong>Veja o erro mostrado pelo PHP:</strong></p>
<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
</div>
<p>Isso porque tentamos alterar um atributo com a visibilidade igual a private. Para conseguir modificar esse atributo vamos criar um método para isso. Veja o complemento do arquivo funcionário.class.php</p>
<pre class="syntax-highlight:php">
&lt;
?php
class funcionario
{
	private $Codigo;
	private $Nome;
	private $Salario;
	//função para “setar” um valor no atributo salario
	function SetSalario($Salario)
	{
		//antes de passar o valor do salario verificamos se o mesmo e um numero e positivo, se sim, passamos o valor para o atributo
		if (is_numeric($Salario) and ($Salario &gt; 0))
		{
			$this-&gt;Salario = $Salario;
		}
	}
	//funcao para mostrar o salario
	function GetSalario()
	{
		echo &quot;O salário é: {$this-&gt;Salario}&quot;;

	}
}
?&gt;
</pre>
<p>Na próxima matéria vamos ver a visibilidade <a href="http://www.kadunew.com/blog/?p=407">protected</a>. Até lá!</p>
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li><a href="http://www.kadunew.com/blog/php/metodo-construtor-do-php" title="Método construtor do PHP">Método construtor do PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/smarty-php-template" title="Vídeo aula: Introdução ao Smarty php Template">Vídeo aula: Introdução ao Smarty php Template</a></li>
<li><a href="http://www.kadunew.com/blog/php/funcao-autoload-no-php" title="Função autoload no PHP">Função autoload no PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii" title="Encapsulamento e visibilidade -PHP (parte III)">Encapsulamento e visibilidade -PHP (parte III)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii" title="Encapsulamento e visibilidade -PHP (parte II)">Encapsulamento e visibilidade -PHP (parte II)</a></li>
<li><a href="http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes" title="Introdução PHP orientado a objetos &#8211; objetos e classes">Introdução PHP orientado a objetos &#8211; objetos e classes</a></li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=402&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Herança no PHP 5</title>
		<link>http://www.kadunew.com/blog/php/heranca-no-php-5</link>
		<comments>http://www.kadunew.com/blog/php/heranca-no-php-5#comments</comments>
		<pubDate>Thu, 03 Sep 2009 14:08:40 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=396</guid>
		<description><![CDATA[A utilização do paradigma orientado a objetos nos permite criar projetos de forma mais organizada, mas um de seus principais benefícios é o reuso. A possibilidade de reutilizar partes de códigos já escritos antes, nos dando mais agilidade no desenvolvimento de aplicações, e sem a necessidade de termos trechos de códigos duplicados.
Herança em Orientação a [...]]]></description>
			<content:encoded><![CDATA[<p>A utilização do paradigma orientado a objetos nos permite criar projetos de forma mais organizada, mas um de seus principais benefícios é o reuso. A possibilidade de reutilizar partes de códigos já escritos antes, nos dando mais agilidade no desenvolvimento de aplicações, e sem a necessidade de termos trechos de códigos duplicados.<br />
Herança em Orientação a objetos nada mais é que o compartilhamento de atributos e comportamentos entre as classes de uma mesma hierarquia. As classes inferiores da hierarquia herdam esses atributos e comportamentos das classes superiores, chamadas de superclasses.<br />
<span id="more-396"></span><br />
Um exemplo simples disso é o seguinte:<br />
Uma superclasse chamada de veiculo. Todo veículo tem nome, cor, ano de fabricação, etc. Como métodos poderíamos ter andar, ligar, etc. Depois criaríamos as classes mais especificas, como: Carro, Caminhão, Ônibus. E dentro de cada uma colocaríamos as suas características próprias, por exemplo, na classe ônibus podemos por as seguintes propriedades: Número máximo de passageiros sentados, número máximo de passageiros em pé. Propriedades essas que já não são interessantes para as classes Carro e caminhão.<br />
Para exemplificar o uso de herança, vamos utilizar as classes Pessoa e funcionário.<br />
<strong>Veja o diagrama UML abaixo:</strong><br />
<img src="http://www.kadunew.com/blog/wp-content/uploads/2009/08/diagrama_pessoa_funcionario1.gif" alt="diagrama_pessoa_funcionario1" title="diagrama_pessoa_funcionario1" width="222" height="390" class="aligncenter size-full wp-image-391" /><br />
<strong>Abaixo o código fonte comentado:</strong></p>
<pre class="syntax-highlight:php">
&lt;
?
php
class Pessoa
/*
classe pessoa. è uma super classe. É uma classe generica,
a partir dela podemos criar classes mais especificas.
*/
{
	//Atributos da classe
	var $nome;
	var $endereco;
	var $idade;

	// metodos que imprimem os atributos da classe
	function ImprimeDados()
	{
		echo &quot;Nome: {$this-&gt;nome}&lt;br&gt;&quot;;
		echo &quot;Endereço: {$this-&gt;endereco}&lt;br&gt;&quot;;
		echo &quot;Idade: {$this-&gt;idade}&lt;br&gt;&quot;;
	}
}

class Funcionario extends Pessoa
/*
classe filha, herda atributos e métodos de sua classe pai,
no caso a classe pessoa. Veja o comando extends para
criar a herança
*/
{
	//atributos da classe
	var $salario;
	var $cargo;

	/* método criado para calcular o salario liquido e
	  mostrar o mesmo*/
	function ObterSalario()
	{
       $this-&gt;salario -=$this-&gt;salario * 0.1;
		echo &quot;Salário:{$this-&gt;salario}&lt;br&gt;&quot;;
	}

	/*Aqui temos uma sobre escrita (overriding). Veja
	que modificamos o funcionamento do metodo da classe pai
	acrescentando a impressão na tela do salario e o cargo.
	O Operador parent:: serve para chamar o metodo da classe pai*/
	function ImprimeDados()
	{
		parent::ImprimeDados();
        echo &quot;Salário Bruto: {$this-&gt;salario}&lt;br&gt;&quot;;
		echo &quot;Cargo: {$this-&gt;cargo}&lt;br&gt;&quot;;
	}

}

?&gt;

&lt;
?
php
//criando o objeto $func e passando valores
$func = new funcionario();
$func-&gt;nome = &quot;carlos Eduardo&quot;;
$func-&gt;endereco = &quot;Assis Brasil, 123&quot;;
$func-&gt;idade = 23;
$func-&gt;salario = 2000;
$func-&gt;cargo = &quot;Diretor&quot;;
echo &quot;&lt;b&gt;Dados do funcionário&lt;/b&gt;&lt;br&gt;&quot;;
//passando para o nosso objeto o metodo de mostrar os dados
echo &quot;{$func-&gt;ImprimeDados()}&quot;;
echo &quot;&lt;b&gt;Salário do funcionário com desconto de 10%&lt;/b&gt;&lt;br&gt;&quot;;
//mostrando o salario com o metodo que desconta 10%
echo &quot;{$func-&gt;ObterSalario()}&quot;;
?&gt;
</pre>
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li>Nenhum post relacionado</li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=396&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/heranca-no-php-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução PHP orientado a objetos &#8211; objetos e classes</title>
		<link>http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes</link>
		<comments>http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes#comments</comments>
		<pubDate>Wed, 10 Jun 2009 16:08:58 +0000</pubDate>
		<dc:creator>Carlos Eduardo - Kadu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kadunew.com/blog/?p=350</guid>
		<description><![CDATA[A linguagem de programação PHP foi criada em 1994 por Rasmus Lerdorf, mas ao longo do tempo vários programadores cooperaram no aprimoramento da linguagem.  Sua versão atual é o PHP 5. Tendo agora maior suporte a orientação a objetos, como tais linguagens C++, Java, C# entre outras.  O PHP hoje é uma linguagem [...]]]></description>
			<content:encoded><![CDATA[<p>A linguagem de programação PHP foi criada em 1994 por <a href="http://lerdorf.com/bio.php">Rasmus Lerdorf</a>, mas ao longo do tempo vários programadores cooperaram no aprimoramento da linguagem.  Sua versão atual é o PHP 5. Tendo agora maior suporte a orientação a objetos, como tais linguagens C++, Java, C# entre outras.  O PHP hoje é uma linguagem utilizada por diversos programadores ao redor do mundo.</p>
<h3>Orientação a objetos</h3>
<p>Orientação a objetos nada mais é que um <strong>paradigma de programação</strong>. Esse paradigma não é novo, desde a década de 60 já existiam linguagem que davam suporte a essa metodologia de desenvolvimento.</p>
<p>Usamos o termo Orientação a objetos para qualquer estilo de programação que use o conceito objeto (entidade que use características e comportamentos).</p>
<p>Programar Orientado a objetos é <strong>abstrair problemas da realidade</strong> para que sejam modelados de forma computacional. Na <abbr="Programação Orientada a Objetos>POO</a> uma pessoa é um objeto, funcionário é um objeto, cliente é um objeto e assim por diante.</p>
<p>Ao trabalharmos com Programação orientada a objetos é de extrema importância entender o conceito de Classes e Objetos.<br />
<span id="more-350"></span></p>
<h3>Classe</h3>
<p>A classe nada mais é que uma estrutura, um molde, uma forma que define os tipos de dados (atributos e métodos). Os atributos seriam as variáveis, as características do objeto a serem criadas. Exemplo: Uma classe pessoa poderia ter os atributos: Nome, Endereço e  Cidade. Como métodos poderíamos ter: Andar, Envelhecer e Crescer. </p>
<p>Uma classe define todos <strong>atributos e comportamentos</strong> (métodos) comuns compartilhados por um mesmo tipo de objeto. Podem ser classes entidades do negócio que se trata, como por exemplo, Pessoa, Cliente, Fornecedor, etc.</p>
<p>Imagine um objeto do tipo carro. No mundo real existem vários carros, porém somente uma classe carro. Ao modelar uma classe carro sabemos como eles são feitos.Todos possuem diferentes marcas, mas todos tem quatro rodas, um motor entre outras características que fazem com que nós identifiquemos a classe carro. Dessa forma conseguimos diferenciar o que é um carro e oque é um caminhão, por exemplo.</p>
<h3>Atributos e métodos</h3>
<p>Os atributos são as variáveis de uma classe. As características que definem um objeto que será criado através dessa classe. Os atributos podem armazenar valores e até mesmo outros objetos que podem ser alterados durante a execução do programa.</p>
<p>Exemplos de atributos de uma classe porta: Cor (Marrom), Altura(2,00), Largura(0,80).</p>
<p>Já os métodos são as ações ou serviços que os objetos podem executar. São os comportamentos dos objetos. Normalmente através dos métodos que modificamos os atributos de uma classe.</p>
<p>Exemplos de métodos de uma classe porta: Abrir e Fechar.</p>
<h3>Veja a baixo o exemplo de uma classe em PHP:</h3>
<pre class="syntax-highlight:php">class Pessoa{
var $codigo;
var $nome;
var $altura;
var $idade;
var $salario;

function ImprimeSalario(){
print &#039;Salário:&#039;.$this-&gt;salario;
}
?&gt;
</pre>
<p>No exemplo acima o método é o ImprimeSalario().<br />
Utilizamos $this para referenciar o atributo da própria classe.</p>
<h3>Objeto</h3>
<p>Um objeto tem a mesma estrutura de uma classe, mas sua estrutura é dinâmica, seus atributos podem mudar, ser alterados durante a execução do programa. Através de uma classe podemos criar vários objetos a partir de uma classe.</p>
<p>Para criarmos um objeto do tipo pessoa utilizamos o operador new e logo depois o nome da classe.</p>
<p>Para acessarmos os atributos dos objetos, utilizamos o nome do objeto e a propriedade. O objeto não foi feito para ser impresso diretamente, mas podemos fazer isso com suas propriedades.</p>
<p>Abaixo veja como criar um objeto e passar valores para seus atributos.<br />
Logo depois imprimimos os dados na tela</p>
<pre class="syntax-highlight:php">
$pedro = new Pessoa;
$pedro-&gt;$codigo = 10;
$pedro-&gt;$nome = Pedro Oliveira;
$pedro-&gt;$altura = 1.76;
$pedro-&gt;$idade = 28;
$pedro-&gt;$salario = 2500;
echo “{$pedro-&gt;$nome } tem {$pedro-&gt;$idade} anos”;
</pre>
<h3>Isso vai interessar você também</h3>
<ul class="related_post">
<li><a href="http://www.kadunew.com/blog/php/metodo-construtor-do-php" title="Método construtor do PHP">Método construtor do PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/smarty-php-template" title="Vídeo aula: Introdução ao Smarty php Template">Vídeo aula: Introdução ao Smarty php Template</a></li>
<li><a href="http://www.kadunew.com/blog/php/funcao-autoload-no-php" title="Função autoload no PHP">Função autoload no PHP</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-iii" title="Encapsulamento e visibilidade -PHP (parte III)">Encapsulamento e visibilidade -PHP (parte III)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade-php-parte-ii" title="Encapsulamento e visibilidade -PHP (parte II)">Encapsulamento e visibilidade -PHP (parte II)</a></li>
<li><a href="http://www.kadunew.com/blog/php/encapsulamento-e-visibilidade" title="Encapsulamento e visibilidade -PHP (parte I)">Encapsulamento e visibilidade -PHP (parte I)</a></li>
</ul>
<img src="http://www.kadunew.com/blog/?ak_action=api_record_view&id=350&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.kadunew.com/blog/php/introducao-php-orientado-a-objetos-objetos-e-classes/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

