Advertisement
ILKOV

Untitled

Apr 18th, 2018
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.42 KB | None | 0 0
  1. <?php
  2.  
  3. interface LoginStrategy {
  4.     public function onLogin();
  5. }
  6.  
  7. class AdminLogin implements LoginStrategy {
  8.  
  9.     public function onLogin()
  10.     {
  11.         echo "logined as admin";
  12.     }
  13. }
  14.  
  15. class CustomerLogin implements LoginStrategy {
  16.  
  17.     public function onLogin()
  18.     {
  19.         echo "logined as user";
  20.     }
  21. }
  22.  
  23. class SellerLogin implements LoginStrategy {
  24.  
  25.     public function onLogin()
  26.     {
  27.         echo "logined as seller";
  28.     }
  29. }
  30.  
  31. class LoginTypeSelector {
  32.  
  33.     public $loginType;
  34.  
  35.     public function __construct($loginType)
  36.     {
  37.         switch ($loginType) {
  38.             case "customer":
  39.                 $this->loginType = new CustomerLogin();
  40.                 break;
  41.             case "admin":
  42.                 $this->loginType = new AdminLogin();
  43.                 break;
  44.             case "seller":
  45.                 $this->loginType = new SellerLogin();
  46.                 break;
  47.         }
  48.     }
  49. }
  50.  
  51. class Loginer {
  52.  
  53.     private $decryptor;
  54.  
  55.     public function __construct(Decryptor $decryptor)
  56.     {
  57.         $this->decryptor = $decryptor;
  58.     }
  59.  
  60.     public function login($dataForLogin)
  61.     {
  62.         $userData = DataKeeper::takeData();
  63.  
  64.         foreach ($userData as $singleUser)
  65.         {
  66.             $singleUser['password'] = $this->decryptor->decrypt($singleUser['password']);
  67.  
  68.             if($dataForLogin['login'] == $singleUser['login'] && $dataForLogin['password'] == $singleUser['password'])
  69.             {
  70.                 $loginType = new LoginTypeSelector($singleUser['type']);
  71.                 $loginType->loginType->onLogin();
  72.  
  73.                 break;
  74.             }
  75.  
  76. //            return false;
  77.         }
  78.     }
  79. }
  80.  
  81. class Decryptor {
  82.  
  83.     public function decrypt($data)
  84.     {
  85.         return $data;
  86.     }
  87.  
  88. }
  89.  
  90. class DataKeeper {
  91.  
  92.     public static function takeData()
  93.     {
  94.         $data = array([
  95.             'type' => 'customer',
  96.             'login' => '123@mail.ru',
  97.             'password' => 'pass'
  98.         ], [
  99.             'type' => 'admin',
  100.             'login' => '456@mail.ru',
  101.             'password' => 'pass'
  102.         ], [
  103.             'type' => 'seller',
  104.             'login' => '789@mail.ru',
  105.             'password' => 'pass'
  106.         ]);
  107.  
  108.         return $data;
  109.     }
  110. }
  111.  
  112.  
  113. $decryptor = new Decryptor();
  114. $loginer = new Loginer($decryptor);
  115.  
  116. $data = [
  117.     'login' => '123@mail.ru',
  118.     'password' => 'pass'
  119. ];
  120.  
  121. $loginer->login($data)
  122.  
  123. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement