Ir para conteúdo

Arquivado

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

Bruno Augusto

[Resolvido] Muitos Dados...

Recommended Posts

Tentei, tentei, mas o título não ficou bom. :P

 

Ao se trabalhar com volume de dados, a lógica é armazená-los num banco de dados e, quando necessário, requisitar essas informações e trabalhar com elas.

 

Mas... E se determinado volume de dados (consideremos um array com mais de 400 índices) precisarem ser armazenados em algum lugar, independente de um banco de dados, para servir, por exemplo, como parâmetros de uma comparação. Onde armazenar?

 

Normalmente, mesmo que grande, tal lista faz parte da classe em que se trabalha. Mas e se essa mesma lista precisar ser usada em outra classe?

 

- Duplicar essa lista enorme em todas as classes é burrice.

 

- Fazer dessa lista uma propriedade estática e, nas outras que a forem utilizar, chamar a classe que contém os dados é gambiarra, afinal uma classe não tem nada a ver com a outra.

 

- Armazená-la na classe-pai, pra mim, não faz muito sentido, afinal nem todas as classes filhas precisarão desses dados.

 

- Criar uma classe abstrata, com uma propriedade estática contendo a lista, parece legal. Mas só parece, daí não sei se é certo.

 

- Guardar numa Interface? Não vejo elas servindo para isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Duplicar essa lista enorme em todas as classes é burrice.

Eu te chamaria de burro : P , você estaria duplicando o problema, ao mesmo tempo alocando memória desnecessária

 

- Armazená-la na classe-pai, pra mim, não faz muito sentido, afinal nem todas as classes filhas precisarão desses dados.

A Idéia e criar uma classe onde vai ser o 'Model' que acopla esses dados, afinal, você não é obrigado a distribuir essa informação para todas as classes, para isso, você cria métodos na mesma 'Model', e usa na classe que precisar de tal informação, alterar tal informação, remover tal informação, adicionar nova informação .. seguindo um padrão singleton, ou algo parecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você apagou os códigos? Na hora que os vi não dava pra responder.

 

Mas assim, não pecisarei alterar essa informação, ela é constante. Vou usá-la para validar um determinado texto de determinado valor de entrada.

 

Porém, existem outras classes as quais validam, cada uma, uma informação diferente. Mas no meio dessas informações diferentes pode ser que haja a mesma informação validada pela primeira classe. Logo, um ou mais desses objetos precisariam também dessa grande matriz de dados.

 

- Duplicar essa lista enorme em todas as classes é burrice.

Eu te chamaria de burro : P , você estaria duplicando o problema, ao mesmo tempo alocando memória desnecessária

Sei disso. Por isso foi uma frase afirmativa, e não interrogativa :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, esse seu pseudo-código, foi uma das possibilidades que eu citei, que seria uma classe abstrata, porém eu havia dito que ela deveria ter uma propriedade e método estáticos para obter essa lista.

 

O que ainda não me convenceu foi se é certo isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não vejo outra maneira, na propriedade estática pelo menos, você não vai ter que ficar definindo o array na propriedade a cada atualização / requisição de página.

 

<?php
abstract class Storage {
	  /**
	   * Array de dados
	   * @var Array $Storage
	   * @access Private
	   */
	  static private $Storage = Array();
	  /**
	   * Adiciona um elemento no array de dados
	   * @param Mixed $index
	   * @param Mixed $value
	   */
	  static public function attach( $index , $value ) {
		 self::$Storage[ $index ] = $value;
	  }
	  /**
	   * Recupera o array de dados
	   * @return Array 
	   */
	  static public function getStorage(){
		  return ( Array ) self::$Storage;
	  }
                 /**
                  * ....
                  */
}

       Storage::attach( 'nome' , '?' );

       print_r( Storage::getStorage() );

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.