Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

iCl4w

[Resolvido] Classes, variável $this e .inc

Recommended Posts

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

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

$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

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

$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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.