Jump to content


Bruno Augusto

Member Since 09/03/2004
Offline Last Active 24/08/2012, 10:16
-----

Topics I've Started

Comparação De Arrays Multidimensionais

31/01/2010, 12:52

Vejam a foto:

Posted Image
O primeiro array vêm via HTTP POST, o segundo é um cache de arquivo depois de desserializado.

Isso faz parte de um sistema de atualizações onde é enviado para o meu servidor a lista de arquivos que uma instalação do meu sistema tem e é comparada com outra lista, pré-existente.

Combinando em nomes de arquivo, mas sendo diferente em checksum, entra para lista final, siginificando que deve haver atualização daquele arquivo.

Eu fiz dois foreach's aninhados, cada um sobre um dos arrays, com if's aninhados que verificam o valor das chaves e incluem em outro array, para ser retornado, se houver diferença.

Mas são arrays bem grandes (475 itens para ser exato) e fazer loop dentro de loop acaba ficando muito lento. Ainda mais que é um serviço, se ficar lento minha banda vai pra cucuia. :P

Como eu faço para comparar? Anteriormente os índices filepaths eram diferentes a nível de 3 diretórios. Mexi daqui e mexi dali até fazer o filepath do cache ser igual ao vindo via HTTP POST, mas ainda não consigo comparar por ser multimensional.

A minha tentativa deu certo? Deu. Mas ficou inflexível e, além de comparar essas diferenças, preciso reutilizar o código para obter também os novos arquivos que eu crio os quais uma atualização possa depender. Assim evito a cada pequena correção, obrigar o usuário a baixar um release de mais ou menos 4MB.

Obter Instância Singleton Dinâmicamente...

08/04/2009, 15:06

Pessoal,

Implementações de Singleton têm aos milhares por aí e uma das mais simples é essa:

public static function init()
{
	 if ( NULL === self :: $instance )
	 {
		  self :: $instance = new self();
	 }
		
	 return self :: $instance;
}
Perfeito.

Daí eu fui retomar um arquivo aqui só para não perder o costume e percebi que eu estava usando Singleton de um lado e instância"comuns" (com new) de outro.

Não que não funcionasse, mas que queria tentar de outro jeito.

Tirando as verificações eu fazia:

$var = new $_GET['var'];
Onde o nome da classe passa pela URL em querystring.

Daí, fui passar para Singleton por pura frescura vontade de aprender :lol:

Adicionei aquele bloco na classe (que o nome passou por GET) e troquei a linha acima por:

$var = $_GET['var'] :: init();
E resulta parse error. Se eu tiro a variável e passo a palavra que passa por GET diretamente, funciona.

Pergunta: Essa implementação de Singleton não permite usar variáveis para obter a instância?

Se não, como faço então?

IPB Skin By Virteq