Inpsyde\MultilingualPress\MultilingualPress::bootstrap PHP Method

bootstrap() public method

Bootstraps MultilingualPress.
Since: 3.0.0
public bootstrap ( ) : boolean
return boolean Whether or not MultilingualPress was bootstrapped successfully.
    public function bootstrap()
    {
        if ($this->is_bootstrapped) {
            throw new BadMethodCallException('Cannot bootstrap a MultilingualPress instance that has already been bootstrapped.');
        }
        /**
         * Fires right before MultilingualPress gets bootstrapped.
         *
         * Hook here to register custom service providers.
         *
         * @since 3.0.0
         *
         * @param static $multilingualpress MultilingualPress instance.
         */
        do_action('multilingualpress.bootstrap', $this);
        static::$container->lock();
        // TODO: Eventually remove the following block.
        class_exists('Mlp_Load_Controller') or (require __DIR__ . '/inc/autoload/Mlp_Load_Controller.php');
        new \Mlp_Load_Controller(static::$container['multilingualpress.properties']->plugin_dir_path() . '/src/inc');
        if (!$this->check_installation()) {
            return false;
        }
        $this->bootstrap_service_providers();
        $needs_modules = $this->needs_modules();
        if ($needs_modules) {
            /**
             * Fires right before MultilingualPress registers any modules.
             *
             * @since 3.0.0
             */
            do_action('multilingualpress.register_modules');
            $this->register_modules();
        }
        unset($this->modules);
        static::$container->bootstrap();
        $this->is_bootstrapped = true;
        // TODO: Remove as soon as the old front controller has been replaced completely.
        class_exists('Multilingual_Press') or (require __DIR__ . '/inc/Multilingual_Press.php');
        // TODO: Refactor according to new architecure.
        $old_controller = new \Multilingual_Press(static::$container);
        $old_controller->prepare_plugin_data();
        if (!$needs_modules) {
            return true;
        }
        load_plugin_textdomain('multilingual-press');
        if (is_admin()) {
            $this->bootstrap_admin();
        } else {
            $this->bootstrap_front_end();
        }
        // TODO: Refactor according to new architecure.
        $old_controller->setup();
        return true;
    }

Usage Example

/**
 * Bootstraps MultilingualPress.
 *
 * @since   3.0.0
 * @wp-hook plugins_loaded
 *
 * @return bool Whether or not MultilingualPress was bootstrapped successfully.
 */
function bootstrap()
{
    $container = new AddOnlyContainer();
    $container->share('multilingualpress.properties', new ImmutablePluginProperties(__FILE__));
    $multilingualpress = new MultilingualPress($container);
    $multilingualpress->register_service_provider(new CoreServiceProvider())->register_service_provider(new APIServiceProvider())->register_service_provider(new AssetServiceProvider())->register_service_provider(new DatabaseServiceProvider())->register_service_provider(new FactoryProvider())->register_service_provider(new InstallationServiceProvider())->register_service_provider(new Module\AlternativeLanguageTitleInAdminBar\ServiceProvider())->register_service_provider(new Module\CustomPostTypeSupport\ServiceProvider())->register_service_provider(new Module\Trasher\ServiceProvider())->register_service_provider(new Module\UserAdminLanguage\ServiceProvider())->register_service_provider(new SiteDuplicationServiceProvider())->register_service_provider(new Widget\WidgetServiceProvider());
    /**
     * MultilingualPress functions.
     */
    require_once __DIR__ . '/src/functions.php';
    return $multilingualpress->bootstrap();
}