Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- interface LoginStrategy {
- public function onLogin();
- }
- class AdminLogin implements LoginStrategy {
- public function onLogin()
- {
- echo "logined as admin";
- }
- }
- class CustomerLogin implements LoginStrategy {
- public function onLogin()
- {
- echo "logined as user";
- }
- }
- class SellerLogin implements LoginStrategy {
- public function onLogin()
- {
- echo "logined as seller";
- }
- }
- class LoginTypeSelector {
- public $loginType;
- public function __construct($loginType)
- {
- switch ($loginType) {
- case "customer":
- $this->loginType = new CustomerLogin();
- break;
- case "admin":
- $this->loginType = new AdminLogin();
- break;
- case "seller":
- $this->loginType = new SellerLogin();
- break;
- }
- }
- }
- class Loginer {
- private $decryptor;
- public function __construct(Decryptor $decryptor)
- {
- $this->decryptor = $decryptor;
- }
- public function login($dataForLogin)
- {
- $userData = DataKeeper::takeData();
- foreach ($userData as $singleUser)
- {
- $singleUser['password'] = $this->decryptor->decrypt($singleUser['password']);
- if($dataForLogin['login'] == $singleUser['login'] && $dataForLogin['password'] == $singleUser['password'])
- {
- $loginType = new LoginTypeSelector($singleUser['type']);
- $loginType->loginType->onLogin();
- break;
- }
- // return false;
- }
- }
- }
- class Decryptor {
- public function decrypt($data)
- {
- return $data;
- }
- }
- class DataKeeper {
- public static function takeData()
- {
- $data = array([
- 'type' => 'customer',
- 'login' => '123@mail.ru',
- 'password' => 'pass'
- ], [
- 'type' => 'admin',
- 'login' => '456@mail.ru',
- 'password' => 'pass'
- ], [
- 'type' => 'seller',
- 'login' => '789@mail.ru',
- 'password' => 'pass'
- ]);
- return $data;
- }
- }
- $decryptor = new Decryptor();
- $loginer = new Loginer($decryptor);
- $data = [
- 'login' => '123@mail.ru',
- 'password' => 'pass'
- ];
- $loginer->login($data)
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement