Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operatory bitowe i definicje
Seth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Ciezko zadac jedno pytanie bez przedstawienia tego co juz mam, wiec zaczne od poczatku:


Wpadlem na pomysl ujednolicenia kilku metod w mojej klasie i zrobienia z niej jednej.
Do tej pory mialem takie metody jak:
Cytat
sendErrorMsg()
sendActivationMsg()
sendFailureMsg()


...a obecnie:
Cytat
sendMsg($flag)


gdzie $flag to wartosc jednej z definicji ponizej:
  1. <?php
  2. define('MSG_ERROR', 1);
  3. define('MSG_ACTIVATION', 2);
  4. define('MSG_FAILURE', 4);
  5. ?>


Jezeli chce wyslac wiadomosc typu MSG_ERROR to daje:
sendMsg(ERROR_MSG);
(Wczesniej dawalem zamiast tego sendErrorMsg())

I wszystko ladnie pieknie bo wewnatrz medoty sendMsg() mam switcha, ktory robi mniej wiecej tyle:

  1. <?php
  2. ...
  3. switch ($flag) {
  4.  case MSG_ERROR:
  5. $msg .= 'jakis tam error';
  6. break;
  7.  case MSG_ACTIVATION:
  8. $msg .= 'jakis tam activation';
  9. break;
  10.  case MSG_FAILURE:
  11. break;
  12. }
  13. ...
  14. // (tutaj kod, ktory sie powtarzal w metodach send*Msg())
  15. ...
  16.  
  17. ?>


Ale.... chce miec mozliwosc przeslania "kilku wiadomosci" czyli chce moc zrobic tak:
sendMsg(MSG_ERROR | MSG_ACTIVATION);
itp.

Tylko, ze nie wiem jak to obsluzyc w switchu. Bo za pomoca IFa moge np zorientowac sie czy mam jakas z wiadomosci (MSG_*) np tak:
  1. <?php
  2. if ($flag & MSG_ERROR) ...
  3. ?>


Ale czy rzeczywiscie trzeba pisac mase if'ow do tego? Czy nie da sie jakos switcha skonstruowac tak aby zadzialalo z takim zlozeniem flag?

Ten post edytował Seth 29.04.2006, 15:19:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Hacker
post
Post #2





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


albo wygodniej (jeżeli flag (nie: flagów) jest bardzo dużo) też można za pomocą tablicy w której trzymasz to co dodajesz w kolejności od tego czemu odpowiada 1 poprzez 2, 4, 8 itd. i robisz pętle
  1. <?php
  2.  
  3. $t=1;
  4. for($i=0; $i<count($tablica); $i++, $t*2)
  5. {
  6. if (($flag & $t) == $t)
  7. {
  8. $msg .= $tablica[i];
  9. }
  10. }
  11. ?>


----------
--
poprawilem blad
, a drugiego('poptez') nie znalazłeś (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) (Hacker)
dr_bonzo


Ten post edytował Hacker 30.04.2006, 08:59:24
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 19:54