1
resposta

[Sugestão] Usando SplObjectStorage no lugar de Set

Estive passando os seguintes erros por optar usar SplObjectStorage:

uncaught Error: Call to undefined method SplObjectStorage::add()
Uncaught Error: Call to undefined method SplObjectStorage::remove()

Para soluciona-los precisei considerar outros metodos:

  • attach() no lugar de add()
  • detach() no lugar de remove()

Ficou assim:

$chatComponent = new class implements MessageComponentInterface
{
    private SplObjectStorage $connections;

    public function __construct()
    {
        echo "Nova conexão aceita " . PHP_EOL;
        $this->connections = new SplObjectStorage();
    }

    public function onOpen(ConnectionInterface $conn)
    {
        echo "Conexão encerrada " . PHP_EOL;
        $this->connections->attach($conn);
    }

    public function onClose(ConnectionInterface $conn)
    {
        $this->connections->detach($conn);
    }
    ...
}
1 resposta

Olá, Luana! Tudo bem?

Primeiramente gostaria de agradecer por aguardar um retorno!

Obrigado por compartilhar sua sugestão e também por fornecer o código que você utilizou para resolver o problema.

Realmente precisamos reconsiderar os métodos quando vamos trabalhar com a extensão Ds ou SplObjectStorage.

Continue os estudos =)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software