/** * Initialize API * * Only one instance of API may be present * @param array $settings * @param Phramework\URIStrategy\IURIStrategy $URIStrategy * URIStrategy object * @param object|null $translationObject *[Optional]* Set custom translation class * @throws Phramework\Exceptions\ServerException */ public function __construct($settings, $URIStrategyObject, $translationObject = null) { self::$settings = $settings; self::$user = false; self::$language = 'en'; self::$requestUUID = \Phramework\Models\Util::generateUUID(); //Instantiate StepCallback object self::$stepCallback = new \Phramework\Extensions\StepCallback(); if (!is_subclass_of($URIStrategyObject, \Phramework\URIStrategy\IURIStrategy::class, true)) { throw new \Phramework\Exceptions\ServerException('Class is not implementing Phramework\\URIStrategy\\IURIStrategy'); } self::$URIStrategy = $URIStrategyObject; //If custom translation object is set add it if ($translationObject) { self::setTranslation($translationObject); } else { //Or instantiate default translation object //sef::$translation = new \Phramework\Extensions\Translation( // self::getSetting('language'), // self::getSetting('translation', 'track_missing_keys', null, false) //); } self::$instance = $this; }