anpera.net https://anpera.homeip.net/phpbb3/ |
|
Konstanten in Klassendefinition https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=4459 |
Seite 1 von 1 |
Autor: | dragonslayer [ Fr 04 Apr, 2008 22:51 ] |
Betreff des Beitrags: | Konstanten in Klassendefinition |
Ich wollt meinen globalen Namenraum ein klein wenig aufräumen und somit einige zusammenhängende Konstanten + Methoden in einer Klasse kapseln. Leider stoße ich bei den Konstanten (30 an der Zahl) auf ein Problem. Ich muss den Konstanten die Werte 2^0,2^1, 2^2, 2^3, ... zuweisen, damit ich sie anschließend als bitweise oder Verknüpfung nutzen kann. Jetzt ist es natürlich einfach bei wenigen Konstanten 1,2,4,8,16 usw zu schreiben, aber bei 30 wirds eben schon etwas mehr. Ohne die Klassendefinition hab ich halt immer define('CONST1',1); define('CONST2',1<<1); define('CONST3',1<<2); define('CONST4',1<<3); geschrieben. Das funktioniert in der Klassendefinition anscheinend nicht. class xyz{ const CONST1 = 1<<1; } schmeisst einen Fehler. Hab ich etwas übersehen? klappt das wirklich nicht? Gibts einen Workaround? |
Autor: | Rikkarda [ Sa 05 Apr, 2008 00:21 ] |
Betreff des Beitrags: | Re: Konstanten in Klassendefinition |
Zitat: Klassenkonstanten Es ist möglich für jede Klasse konstante Werte zu definieren, die gleich und unabänderlich bleiben. Konstanten weichen darin von normalen Variablen ab, dass man nicht das $ Symbol benutzt, um sie zu deklarieren oder zu benutzen. Wie statische Member auch, kann auf konstante Werte nicht (mittels $object::constant) aus einer Instanz des Objektes heraus zugegriffen werden. Der Wert kann nur ein konstanter Ausdruck sein, keine (zum Beispiel) Variablen, Klassenmamber, Ergebnisse einer mathematischen Operation oder Funktionsaufrufe. quelle: http://phpforum.de/php/php-handbuch/sta ... tants.html ich persönlich kenne leider keine Möglichkeit dies mit einer Rechenfunktion zu ermöglichen |
Autor: | Eliwood [ Sa 05 Apr, 2008 00:41 ] |
Betreff des Beitrags: | Re: Konstanten in Klassendefinition |
Nein, leider kann man keine Ausdrücke verwenden bei der Variablendefinition. Allerdings könntest du die Zahlen in Hexadezimaler Schreibweise notieren: $this->bbcode_second_pass_code('', '0x001 0x002 0x004 0x008 0x010 0x020 0x040 0x080 0x100 0x200 0x400 0x800 0x1000 0x2000 0x4000 0x8000 [...]') |
Autor: | Nightborn [ Sa 05 Apr, 2008 09:16 ] |
Betreff des Beitrags: | Re: Konstanten in Klassendefinition |
Zitat: Ich muss den Konstanten die Werte 1^0,1^1, 1^2, 1^3, ... zuweisen, also das wäre das "hoch" oder Exponentialzeichen... und 1^0==1^234324234 übrigens... eins hoch irgendwas ist immer eins <.< Eli hat schon den Code gelesen, und aufs Richtige geantwortet. Du kannst übrigens wirklich problemlos 1,2,4,8,usw schreiben, und dann nachher in Hex auswerten. Auszug aus Lotgd 1.x.x. myDefine("SU_MEGAUSER",1); myDefine("SU_EDIT_MOUNTS",2); myDefine("SU_EDIT_CREATURES",4); myDefine("SU_EDIT_PETITIONS",8); myDefine("SU_EDIT_COMMENTS",16); myDefine("SU_EDIT_DONATIONS",32); myDefine("SU_EDIT_USERS",64); myDefine("SU_EDIT_CONFIG",128); myDefine("SU_INFINITE_DAYS",256); (mydefine ist nur ein etwas anderes define) |
Autor: | dragonslayer [ Sa 05 Apr, 2008 12:29 ] |
Betreff des Beitrags: | Re: Konstanten in Klassendefinition |
Ok, schade dass die Wertzuweisung eines arithmetischen Ausdrucks nicht funktioniert, aber ok, muss man mit leben. @Eliwood Danke, die Hex Schreibweise 0x200000 ist doch um einiges übersichtlicher als 2097152 für den 21. Wert :-) @Nightborn *klatschandiestirn* Narf, ich meinte ja auch 2^x , nicht 1^x :-) |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |