diff --git a/lib/HashAlgorithm/Cleartext.php b/lib/HashAlgorithm/Cleartext.php
index 17526b1..179d1ba 100644
--- a/lib/HashAlgorithm/Cleartext.php
+++ b/lib/HashAlgorithm/Cleartext.php
@@ -25,25 +25,7 @@ namespace OCA\user_sql\HashAlgorithm;
*/
class Cleartext implements HashAlgorithm
{
- /**
- * @var Cleartext
- */
- private static $instance;
-
- private function __construct()
- {
- }
-
- /**
- * @return Cleartext
- */
- public static function getInstance()
- {
- if (self::$instance === null) {
- self::$instance = new Cleartext();
- }
- return self::$instance;
- }
+ use Singleton;
/**
* @inheritdoc
@@ -68,8 +50,4 @@ class Cleartext implements HashAlgorithm
{
return $password === $dbHash;
}
-
- private function __clone()
- {
- }
}
diff --git a/lib/HashAlgorithm/MD5.php b/lib/HashAlgorithm/MD5.php
index 5d7548d..acf3370 100644
--- a/lib/HashAlgorithm/MD5.php
+++ b/lib/HashAlgorithm/MD5.php
@@ -25,25 +25,7 @@ namespace OCA\user_sql\HashAlgorithm;
*/
class MD5 implements HashAlgorithm
{
- /**
- * @var MD5
- */
- private static $instance;
-
- private function __construct()
- {
- }
-
- /**
- * @return MD5
- */
- public static function getInstance()
- {
- if (self::$instance === null) {
- self::$instance = new MD5();
- }
- return self::$instance;
- }
+ use Singleton;
/**
* @inheritdoc
@@ -68,8 +50,4 @@ class MD5 implements HashAlgorithm
{
return md5($password) === $dbHash;
}
-
- private function __clone()
- {
- }
}
diff --git a/lib/HashAlgorithm/SHA1.php b/lib/HashAlgorithm/SHA1.php
index 6913adb..e9f7a1e 100644
--- a/lib/HashAlgorithm/SHA1.php
+++ b/lib/HashAlgorithm/SHA1.php
@@ -25,25 +25,7 @@ namespace OCA\user_sql\HashAlgorithm;
*/
class SHA1 implements HashAlgorithm
{
- /**
- * @var SHA1
- */
- private static $instance;
-
- private function __construct()
- {
- }
-
- /**
- * @return SHA1
- */
- public static function getInstance()
- {
- if (self::$instance === null) {
- self::$instance = new SHA1();
- }
- return self::$instance;
- }
+ use Singleton;
/**
* @inheritdoc
@@ -68,8 +50,4 @@ class SHA1 implements HashAlgorithm
{
return sha1($password) === $dbHash;
}
-
- private function __clone()
- {
- }
}
diff --git a/lib/HashAlgorithm/Singleton.php b/lib/HashAlgorithm/Singleton.php
new file mode 100644
index 0000000..b54c550
--- /dev/null
+++ b/lib/HashAlgorithm/Singleton.php
@@ -0,0 +1,49 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+namespace OCA\user_sql\HashAlgorithm;
+
+/**
+ * Singleton pattern trait.
+ * @author Marcin Łojewski
+ */
+trait Singleton
+{
+ private static $instance;
+
+ final private function __construct()
+ {
+ $this->init();
+ }
+
+ protected function init()
+ {
+ }
+
+ final public static function getInstance()
+ {
+ return isset(static::$instance)
+ ? static::$instance
+ : static::$instance = new static;
+ }
+
+ final private function __clone()
+ {
+ }
+}