• Artigos
  • Projetos
  • Lista
  • Docs
  • Enviar Artigo
  • ?

Manipulando arrays com SPL e ArrayObject

19/09/2009  Pablo DallOglio 

Neste artigo iremos estudar algumas vantagens em se utilizar a biblioteca SPL e a classe ArrayObject sobre a forma tradicional de manipular arrays.

A Biblioteca SPL (Standard PHP Library) é um conjunto de classes e interfaces em PHP que implementam algumas formas comuns de acessos à dados. São projetadas para manipular estruturas complexas como arrays, xml, diretórios, consultas ao banco de dados, dentre outros.

Dentro da biblioteca SPL, a classe ArrayObject permite manipular vetores e a classe ArrayIterator permite percorrer vetores por meio de uma interface totalmente orientada a objetos. Nos artigos anteriores já comentamos sobre estes recursos. Neste artigo, iremos estudar uma vantagem em utilizar a biblioteca SPL para tratar vetores, em especial por meio da utilização da classe ArrayObject.

No exemplo a seguir, temos uma classe chamada Carro. Esta classe possui dois métodos setTipos() que recebe um vetor e getTipos() que retorna este vetor. Após instanciar um objeto e definir alguns tipos, tentamos acessar o vetor resultante indicando um índice, neste caso o índice 2. Vejam que o resultado deste código é um erro, pois o PHP não permite este acesso direto. Para funcionar isto, seria necessário atribuir os tipos para uma variável auxiliar que armazenasse o vetor resultante e após isto, acessar este vetor.

<?php
class Carro
{
    private 
$tipos;

    public function 
setTipos($tipos)
    {
        
$this->tipos = $tipos;
    }

    public function 
getTipos()
    {
        return 
$this->tipos;
    }
}

$palio = new Carro;
$palio->setTipos(array('fire', 'ELX1.0', 'ELX1.4',  '1.8R'));

var_dump($palio->getTipos()[2]); // Parse error: syntax error, unexpected '[' in /tmp/use.php on line 19
?>



A biblioteca SPL, por meio da classe ArrayObject, oferece uma interface totalmente orientada a objetos para acessar os vetores.
No exemplo que segue, estamos reescrevendo o código anterior para que o mesmo faça uso da classe ArrayObject. Desta forma, podemos acessar o índice 2 do vetor resultante utilizando o método offsetGet() do objeto ArrayObject resultante.

<?php
class Carro
{
    private 
$tipos;

    public function 
setTipos(Array $tipos)
    {
        
$this->tipos = new ArrayObject($tipos);
    }

    public function 
getTipos()
    {
        return 
$this->tipos;
    }
}

$palio = new Carro;
$palio->setTipos(array('fire', 'ELX1.0', 'ELX1.4',  '1.8R'));

var_dump($palio->getTipos()->offsetGet(2)); // Resultado: string(6) "ELX1.4"
?>



Comentários

Adicionar Comentário
 login  
 Senha  
 Título  
 Comentário  
  Efetuar Cadastro
  Esqueci a Senha

Livros




    Outros

    Busque conteúdo no site
    Participe de nosso grupo no google

    [Página do grupo]  [Arquivo do grupo]

    Google

    Parceiros

 
Designed by Wolfgang Bartelme Designed by Wolfgang Bartelme

© 2006 Wordpress Themes | Theme (Not so) Fresh
XHTML CSS RSS allposts