public function getHandlers()
    {
        $handlers = &gplcart_static('install.handlers');

        if (isset($handlers)) {
            return $handlers;
        }

        $handlers = array();
        $this->hook->attach('install.handlers', $handlers, $this);

        foreach ($handlers as $id => &$handler) {

            if (empty($handler['module'])) {
                unset($handlers[$id]);
                continue;
            }

            $info = $this->module->getInfo($handler['module']);

            if (empty($info['type']) || $info['type'] !== 'installer') {
                unset($handlers[$id]);
                continue;
            }

            $handler['id'] = $id;
            $handler['weight'] = isset($handler['weight']) ? $handler['weight'] : 0;
        }

        $handlers = array_merge($handlers, $this->getDefaultHandler());
        gplcart_array_sort($handlers);
        return $handlers;
    }