<?php
/*
 *   $Id$
 *
 *   AbanteCart, Ideal OpenSource Ecommerce Solution
 *   http://www.AbanteCart.com
 *
 *   Copyright © 2011-2026 Belavier Commerce LLC
 *
 *   This source file is subject to Open Software License (OSL 3.0)
 *   License details are bundled with this package in the file LICENSE.txt.
 *   It is also available at this URL:
 *   <http://www.opensource.org/licenses/OSL-3.0>
 *
 *  UPGRADE NOTE:
 *    Do not edit or add to this file if you wish to upgrade AbanteCart to newer
 *    versions in the future. If you wish to customize AbanteCart for your
 *    needs, please refer to http://www.AbanteCart.com for more information.
 */
if (!defined('DIR_CORE')) {
    header('Location: static_pages/');
}

/**
 * Class AHook
 *
 * @property ExtensionsApi $extensions
 * @property ARequest $request
 * @property ASession $session
 * @property AConfig $config
 *
 * @method hk_InitEnd
 * @method hk_IndexProcess
 * @method hk_IndexEnd
 */
final class AHook
{
    /** @var Registry */
    public $registry;

    public function __construct(Registry $registry)
    {
        $this->registry = $registry;
    }

    public function __get($key)
    {
        return $this->registry->get($key);
    }

    public function __set($key, $value)
    {
        $this->registry->set($key, $value);
    }

    public function __call($method, $args)
    {
        if (!$this->registry->has('extensions')) {
            return null;
        }

        array_unshift($args, $this);
        return call_user_func_array([$this->extensions, $method], $args);
    }
}