Ir para conteúdo
Fórum Script Brasil
  • 0

ArrayAccess::offsetGet()


Raphael de Veyrac

Pergunta

Pessoal, bom dia a todos. Estou estudando o caso das tabelas com a interface ArrayAccess, o autor do livro explica que para a auto-incrementação devemos retornar o valor por referência e não por cópia: Um exemplo abaixo:

<?php

class tabela implements ArrayAccess{

    private $tabela = array();

    public function offsetExists($index) {
        return isset ($this->tabela[$index]);
    }

    public function &offsetGet($index) { //reparem que acrescentei o símbolo "&" para o valor ser copiado como referência.
        return $this->tabela[$index];
    }

    public function  offsetSet($index, $valor) {
        return $this->tabela[$index] = valor;
    }

    public function  offsetUnset($index) {
        unset ($this->tabela[$index]);
    }
}
$tab = new tabela();
if (!isset($tab[42])) {
    $tab = 1;
}

echo ++$tab[42];
unset($tab[42]);


?>

o resultado deste script é: Fatal error: Declaration of tabela::offsetGet() must be compatible with that of ArrayAccess::offsetGet() in /var/www/tabela.php on line 3.

Alguém pode me dar uma dica? Já procurei em outros sites e dizem que não é possível incrementar nem por cópia nem por referência. É verdade?

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...