<?php

 /*
 * Init.php
 * 
 * This file is part of the "gotoviar" project.
 * See "LICENSE" for license information.
 */

/**
 * @package gotoviarplugin
 */
namespace GTVR;

final class GTVR_Init
{
	/**
	 * Store all the classes inside an array
	 * @return array Full list of classes
	 */
	public static function get_services() 
	{
		return [
			Pages\GTVR_Admin::class,
			Base\GTVR_Enqueue::class,
			Base\GTVR_StartHereLinks::class,
			Handlers\GTVR_WooCommerce::class
		];
	}

	/**
	 * Loop through the classes, initialize them, 
	 * and call the register() method if it exists
	 * @return
	 */
	public static function register_services() 
	{
		foreach ( self::get_services() as $class ) {
			$service = self::instantiate( $class );
			if ( method_exists( $service, 'register' ) ) {
				$service->register();
			}
		}
	}

	/**
	 * Initialize the class
	 * @param  class $class    class from the services array
	 * @return class instance  new instance of the class
	 */
	private static function instantiate( $class )
	{
		$service = new $class();

		return $service;
	}
}