Заменить объект в SplObjectStorage

При подключении я не знаю, какой объект добавить в $this->clientList (который является SplObjectStorage объект), и только теперь будет после регистрации. Я мог бы включить заполнитель StdClass и просто добавить к нему, однако, мне не нужен этот заполнитель. Я полагаю, я мог бы подождать, чтобы добавить контроллер после регистрации, но я всегда вижу, как они добавляются при подключении, и я обеспокоен, что для этого есть веская причина.

Как я могу заменить этот объект-заполнитель StdClass в SplObjectStorage, который связан с соединением, вместо простого добавления к нему нового объекта?

$server->on('connection', function ($conn) {
$this->clientController->addClient($conn);
$conn->on('data', function($data) use ($conn){
$this->clientController->processData($conn,$data);
});
});
class ClientCollections
{
public function __construct() {
$this->clientList = new \SplObjectStorage();
}

public function addClient($connStream) {
$this->clientList->attach($connStream, new \StdClass);
}

public function processData($connStream, $data) {
if(isset($this->clientList[$this->connStream]->Client)) $this->clientList[$this->connStream]->Client->execute($data);
elseif($controller=authenticateLogon($data)) $this->clientList[$this->connStream]->Client=$controller;  //Controller type based on username/password
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]