From 9c13804638abdab2122ac973efa0ff2d641656a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Wed, 28 Feb 2018 23:07:35 +0100 Subject: [PATCH] Singleton pattern trait. --- lib/HashAlgorithm/Cleartext.php | 24 +--------------- lib/HashAlgorithm/MD5.php | 24 +--------------- lib/HashAlgorithm/SHA1.php | 24 +--------------- lib/HashAlgorithm/Singleton.php | 49 +++++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 69 deletions(-) create mode 100644 lib/HashAlgorithm/Singleton.php 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() + { + } +}