public static function getInstance(Registry $params = null) { // $instance set, but $params given -> return new instance if (self::$instance && $params != null) { return new self($params); } // create and get first $instance if (!self::$instance && $params) { self::$instance = new self($params); } // no $instance and $params set, cant work! if (!self::$instance && !$params) { throw new InvalidArgumentException(__CLASS__ . ' must be instanced with params!'); } // return $instance return self::$instance; }