private function _sort($sort_by) { if (count($this->container) < 2) { return; } $left = new self(); $right = new self(); $pivot = array_shift($this->container); foreach ($this->container as $k => $element) { if ($element->compare($pivot, $sort_by) < 0) { $left->container[] = $element; } else { $right->container[] = $element; } } $left->_sort($sort_by); $right->_sort($sort_by); $this->container = array_merge($left->container, array($pivot), $right->container); }