public function add(Request $request) { $hash = $request->get_hash(); $new_requests = $request->extract_children(); if ($this->get_hash() == $hash) { foreach ($request->get_binded() as $object) { $this->bind($object); } unset($request); } else { if (isset($this->requests[$hash])) { foreach ($request->get_binded() as $callback) { $this->requests[$hash]->bind($callback); } unset($request); } else { $this->requests[$hash] = $request; } } foreach ($new_requests as $new_request) { $this->add($new_request); } }