iCl4w 0 Denunciar post Postado Agosto 23, 2010 Olá, Eu gostaria que alguém me explicasse essa fração de código em PHP: class Iteracao implements Iterador { private $obj; private $count; function __construct($obj) { $this->obj = $obj; $this->count = count($this->obj->data); } funtion pegariterador() { return new Iteracao($this); } Estou estudando a Orientação a Objetos do PHP e me deparei com essas duas linhas de código que não entendi bem: $this->count = count($this->obj->data);Sei que $this faz referência a atributos e/ou objetos da classe, mas o que essas duas referências seguidas fazem?E se fosse assim? $this->obj->data->content Essa outra parte: return new Iteracao($this);Essa função retorna uma nova instância Iteracao? Como usaria isso?E como funciona o $this passado como parâmetro aqui? E por último: Usar arquivos .inc pra armazenar classes e/ou funções é seguro? Agradeço a colaboração desde já... Abçs... Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Cruz 1 Denunciar post Postado Agosto 23, 2010 A função count() retorna o número de elementos de uma variável http://br.php.net/manual/pt_BR/function.count.php Quanto ao uso da extensão .inc, nunca faça isso. Só irá expor seu código e senhas. O correto é deixar a extensão .php Experimente buscar por "ext:inc mysql_connect" no Google Quanto ao return new Iteracao($this); ele instância um novo objeto, passando o objeto que instanciou como parâmetro. Praticamente que um clone. Compartilhar este post Link para o post Compartilhar em outros sites
Haz 3 Denunciar post Postado Agosto 23, 2010 $this não faz referência à classe, mas sim ao objeto atual da classe, ou seja, a instância da classe que está sendo executada. Uma referência a classe em sí seria a palavra 'self'. Exemplo, ignorando aquele parâmetro $obj do construtor: <?php $iteracao1 = new Iteracao(); // O $this dentro do construtor da classe Iteracao faz referência a $iteracao1 $iteracao2 = new Iteracao(); // Aqui o $this faz referência a $iteracao2 ?> Estou estudando a Orientação a Objetos do PHP e me deparei com essas duas linhas de código que não entendi bem: $this->count = count($this->obj->data); $this->count é a propriedade count da instância atual da classe; count() é uma função que retorna a quantidade de elementos em uma array; $this->obj provavelmente é uma outra instância da classe Iteracao, diferente da atual; $this->obj->data é a propriedade $data do objeto $this->obj. Sei que $this faz referência a atributos e/ou objetos da classe, mas o que essas duas referências seguidas fazem? E se fosse assim? $this->obj->data->content Nesse caso, $data é um objeto dentro de $this->obj e $content é uma propriedade de $data. Essa outra parte: return new Iteracao($this);Essa função retorna uma nova instância Iteracao? Como usaria isso?E como funciona o $this passado como parâmetro aqui? Sim, isso retorna uma nova instância de Iteracao que difere da atual $this. Esse $this é passado como parâmetro ao construtor, que, como você pode ver, atribui ele à sua propriedade $obj. Espero ter ajudado, abração! Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 24, 2010 Eu gostaria que alguém me explicasse essa fração de código em PHP: Se você quer um Iterator, veja http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/index.php?/topic/393531-1-5-interfaces-spl-iterator-iteratoraggregate/ Não deixe de ler todos os tópicos http://forum.imasters.com.br/public/style_emoticons/default/seta.gif PHP Orientado a Objetos Compartilhar este post Link para o post Compartilhar em outros sites
iCl4w 0 Denunciar post Postado Agosto 24, 2010 $this->count é a propriedade count da instância atual da classe; count() é uma função que retorna a quantidade de elementos em uma array; $this->obj provavelmente é uma outra instância da classe Iteracao, diferente da atual; $this->obj->data é a propriedade $data do objeto $this->obj. Perfeito! Era isso que queria saber Haz! Muito OBRIGADO! Vlw ao Vinicius Cruz pela dica do *.inc - kra, como isso é grave! - e ao João Batista Neto pelo link! Abçs... Compartilhar este post Link para o post Compartilhar em outros sites