Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Klasa][PHP7] Prosta klasa do kilku operacji bitowych., "Dwuwartościowe przechowywanie"
KsaR
post 21.02.2016, 17:40:15
Post #1





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


class.Bits.php
  1. <?php
  2. abstract class Bits
  3. {
  4. protected $bits = 0;
  5.  
  6. public function __construct($bits = NULL)
  7. {
  8. if ($bits !== NULL) $this->bits = $bits;
  9. }
  10.  
  11. public function has(int $bit): bool
  12. {
  13. return ($this->bits & $bit) === $bit;
  14. }
  15.  
  16. public function set(int $bit, bool $bool)
  17. {
  18. if ($bool)
  19. $this->bits |= $bit;
  20. else
  21. $this->bits &=~ $bit;
  22.  
  23. return $this;
  24. }
  25.  
  26. public function get(): int
  27. {
  28. return $this->bits;
  29. }
  30. }


class.Flags.php
  1. class Flags extends Bits
  2. {
  3. const _BAN_ = 1;
  4. const _ONLINE_ = 2;
  5. const _GLOBALS_ = 4;
  6. const _ECHO_ = 8;
  7. const _SPY_ = 16;
  8. }


Klasa jak widać prosta, zainspirowałem się do zrobienia jej po artykule nospor-a.
(Dwuwartościowe przechowywanie)

Oceniać można wszystko (nazewnictwo, co można by lepiej) itp.

Przykłady użycia:

Rejestracja Użytkownika
  1. $flags = new Flags;
  2. $flags->set(Flags::_GLOBALS_, true);
  3. # ... Potem przy insercie do bazy użyjemy dla pola `options`
  4. $flags->get();


Gdy już mamy zarejestrowanego a chcemy np. Zaktualizować status online/spy:
  1. $flags = new Flags($user['options']);
  2. $flags
  3. ->set(Flags::_ONLINE_, true)
  4. ->set(Flags::_SPY_, true);
  5. # przy update do bazy....
  6. $flags->get();


Aby sprawdzić czy uzytkownik jest zalogowany:
  1. $flags = new Flags($user['options']);
  2. #...
  3. if ($flags->has(Flags::_ONLINE_))
  4. {
  5. # online
  6. }
  7. else
  8. {
  9. # offline
  10. }


Oczywiście klasę Flags trzeba dopasować pod swoje wymagania.
@edit. Zmiana nazw klas na duże.

Ten post edytował KsaR 21.02.2016, 21:05:37


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
com
post 28.02.2016, 16:40:13
Post #2





Grupa: Zarejestrowani
Postów: 3 033
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


co z tego ze commit 5 h temu, kod się utrzymuje latami przecież, dałem linka do strony gdzie jest napisane na bazie książek uncle boba smile.gif
Go to the top of the page
+Quote Post

Posty w temacie
- KsaR   [Klasa][PHP7] Prosta klasa do kilku operacji bitowych.   21.02.2016, 17:40:15
- - com   _BAN_ czemu taka konwencja? I raczej już nazewni...   21.02.2016, 18:14:13
|- - KsaR   Cytat(com @ 21.02.2016, 18:14:13 ) _B...   21.02.2016, 20:14:05
- - Pyton_000   const: https://github.com/php-fig/fig-standards/bl...   21.02.2016, 20:49:18
|- - KsaR   Cytat(Pyton_000 @ 21.02.2016, 20:49:1...   21.02.2016, 20:59:28
- - com   problem z czym?   21.02.2016, 20:50:00
- - com   no formę jego zapisu trzeba zmienić. CytatMikroop...   21.02.2016, 21:02:26
|- - KsaR   Cytat(com @ 21.02.2016, 21:02:26 ) no...   21.02.2016, 21:05:07
- - com   no to czas na zmiany, nie stosuje się nazw zastrze...   21.02.2016, 21:07:01
|- - KsaR   Cytat(com @ 21.02.2016, 21:06:25) no ...   21.02.2016, 21:10:36
- - com   https://www.ibuildings.nl/blog/2016/01/prog...cing...   21.02.2016, 21:29:08
|- - KsaR   Cytat(com @ 21.02.2016, 21:29:08 ) ht...   21.02.2016, 21:33:42
- - com   to złego, że trzeba się zastanawiać nad takim kode...   21.02.2016, 21:35:01
- - KsaR   To cza by więcej Arabów zatrudnić, hehe   21.02.2016, 21:37:22
- - com   Tobie może się tak lepiej czytać ale ktoś kto odzi...   21.02.2016, 21:38:51
- - lukaskolista   Co do yoda conditions - jest ok, używa się, przykł...   27.02.2016, 21:33:53
- - Pyton_000   @lukaskolista zobacz z którego roku są te commity ...   27.02.2016, 21:39:08
- - com   lukaskolista Yoda pojawia się w rożnych miejscach...   28.02.2016, 14:44:49
- - lukaskolista   https://github.com/symfony/symfony/blob/mas...Yaml...   28.02.2016, 16:17:01
- - com   co z tego ze commit 5 h temu, kod się utrzymuje la...   28.02.2016, 16:40:13


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 10.06.2024 - 19:04