parent::__construct(__CLASS__);
}
+ /**
+ * Creates a user by a given request instance
+ *
+ * @param $requestInstance An instance of a Requestable class
+ * @return $userInstance An instance of this user class
+ * @todo Add more ways over creating user classes
+ */
+ public static final function createGuestByRequest (Requestable $requestInstance) {
+ // Determine if by email or username
+ if (!is_null($requestInstance->getRequestElement('username'))) {
+ // Username supplied
+ $userInstance = self::createGuestByUserName($requestInstance->getRequestElement('username'));
+ } elseif (!is_null($requestInstance->getRequestElement('email'))) {
+ // Email supplied
+ $userInstance = self::createGuestByEmail($requestInstance->getRequestElement('email'));
+ } else {
+ // Unsupported mode
+ $userInstance = new Guest();
+ $userInstance->debugBackTrace('More ways of creating user classes are needed here.');
+ exit();
+ }
+
+ // Return the prepared instance
+ return $userInstance;
+ }
+
/**
* Creates an instance of this user class by a provided username. This
* factory method will check if username is already taken and if not so it