anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 10:15

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Konstanten in Klassendefinition
BeitragVerfasst: Fr 04 Apr, 2008 22:51 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 20 Sep, 2004 23:43
Beiträge: 164
Wohnort: Berlin
LoGD: http://www.atrahor.de/source.php
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?

_________________
Atrahor.de
http://www.atrahor.de/ci_images.php?id=1


Zuletzt geändert von dragonslayer am Sa 05 Apr, 2008 12:30, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Konstanten in Klassendefinition
BeitragVerfasst: Sa 05 Apr, 2008 00:21 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
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

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Konstanten in Klassendefinition
BeitragVerfasst: Sa 05 Apr, 2008 00:41 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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
[...]')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Konstanten in Klassendefinition
BeitragVerfasst: Sa 05 Apr, 2008 09:16 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
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)

_________________
Entwicklung Lotgd 1.2.2 +nb
1.2.1 +nb ist final

Bugreports/Testing erwünscht, http://nb-core.org

Wichtige Info für Programmierersucher:
viewtopic.php?f=34&t=4285


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Konstanten in Klassendefinition
BeitragVerfasst: Sa 05 Apr, 2008 12:29 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 20 Sep, 2004 23:43
Beiträge: 164
Wohnort: Berlin
LoGD: http://www.atrahor.de/source.php
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 :-)

_________________
Atrahor.de
http://www.atrahor.de/ci_images.php?id=1


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum