Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Enumeracje
nasty
post
Post #1





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

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


Czesc,
Mam dylemat podczas pisania niektorych programow w php, otorz, w php niema "enum", -> enumeracje, kture pozawalaja dla okreslonej zmiennej przypiac tylko kilka mozliwych wartosci...

czy jest jakis zamiennik to enum?
Go to the top of the page
+Quote Post
siemakuba
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


ja ten problem rozwiązywałem tak:

  1. <?php
  2. define('ENUM_VALS', 'value1,value2,value3');
  3. $enum = explode(',', ENUM_VALS);
  4.  
  5. if (in_array('value1', $enum))
  6. {
  7. }
  8.  
  9. // albo krócej:
  10.  
  11. if(in_array('value1', explode(',',ENUM_VALS)))
  12. {
  13. }
  14. ?>


nie musi to być oczywiście stała, ale skoro wartości mają być z góry określone i niemodyfikowalne w czasie pracy skryptu to chyba dobry pomysł. Może to być też od razu tablica, zależy jak trzymasz dane konfiguracyjne.

pozdr.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Stworz sobie klase Enumeracja i po sprawie.

Tak mi sie pomysl spodobale ze nabazgralem szybko:

  1. <?php
  2.  
  3. abstract class Enum
  4. {
  5. private $availableValues = array();
  6. private $value = NULL;
  7.  
  8. final public function __construct()
  9. {
  10. $this->availableValues = $this->getAvailableValues();
  11. }
  12.  
  13. final public function setValue( $value )
  14. {
  15. if ( ! in_array( $value, $this->availableValues, TRUE ) )
  16. {
  17. throw new Exception( 'Zla wartosc: ' . $value );
  18. }
  19.  
  20. $this->value = $value;
  21. }
  22.  
  23. final public function getValue()
  24. {
  25. return $this->value;
  26. }
  27.  
  28. protected abstract function getAvailableValues();
  29. }
  30.  
  31. class MonthEnum extends Enum
  32. {
  33. protected function getAvailableValues()
  34. {
  35. return array( 
  36. 'January',
  37. 'February',
  38. 'etc.'
  39. );
  40. }
  41. }
  42.  
  43. try
  44. {
  45. $me = new MonthEnum();
  46.  
  47. $me->setValue( 'January' );
  48. print( 'me->value == ' . $me->getValue() . "<br />n" );
  49. $me->setValue( 'ThisMonthDoesNotExist' );
  50. }
  51. catch ( Exception $e )
  52. {
  53. print( $e );
  54. }
  55. ?>


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
nasty
post
Post #4





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

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


thanx
Go to the top of the page
+Quote Post

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 Aktualny czas: 19.08.2025 - 05:07