Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

11

14.06.2006, 17:43

Zitat von »"darkfrog"«

ganz so blöd bin ich auch nicht :)

Quellcode

1
2
3
4
5
6
7
8
9
$rot = new test;

class test2
{
function __construct()
{
$rot->testfunktion();
}
}


Also das war in allen Sprachen schon immer als "sowas macht man einfach nicht" deklariert^^
Eine Klasse greift nie (nie (nie))) auf globale Variablen zu.

Ansonsten finde ich es noch etwas befremdlich dass erst die Klasse deklariert wird, dann ausführbarer Code kommt, dann wieder ne Klassendeklaration und dann wieder ne Zeile ausführbarer Code, aber das kann natürlich php spezifisch sein.

Achso und Nicoh muss man verstehen was du da in den 3 Posts sagst? Scheint so als fehlt dazwischen immer was..

12

14.06.2006, 17:48

des dass erst eine klassendeklaration dann code dann wieder klasse... kommt ist jetzt nur in dem kleinen beispiel so, in echt hab ich die klassen extern in datein und dann per include eingefügt

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

13

14.06.2006, 17:51

Die "globale" Variable ist nicht global... sie existiert innerhalb der Klasse nicht! Probiers mal so:

Quellcode

1
2
3
4
5
6
7
8
9
10
class TestClass2
{
    var $Object1;

    public __construct()
    {
        $this->Object1 = new TestClass1;
        $this->Object1->testfunction();
    }
}
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

14

14.06.2006, 17:56

ich will aber nicht die klasse nochmal mit new aufrufen
ich will ein "globales" objekt dass dann in anderen klassen aufgerufen werden kann

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

14.06.2006, 18:03

Zitat von »"Black-Panther"«

Die "globale" Variable ist nicht global... sie existiert innerhalb der Klasse nicht! [...]

Black-Panther
Na, deswegen soll er doch das Schlüsselwort 'global' benutzen, um die Variable innerhalb der Klasse (innerhalb des Konstruktors) sichtbar zu machen.


darkfrog
So meine ich das ungefähr (bzgl. Deines Codes):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class test
{
public function testfunktion() {...}
}

$rot = new test;

class test2
{
function __construct()
{
global $rot;
$rot->testfunktion();
}
}

$grün = new test2;

16

14.06.2006, 18:08

Parse error: syntax error, unexpected T_GLOBAL, expecting T_FUNCTION...

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

17

14.06.2006, 18:10

Zitat von »"darkfrog"«

ich will aber nicht die klasse nochmal mit new aufrufen
ich will ein "globales" objekt dass dann in anderen klassen aufgerufen werden kann


Die solltest du dann aber trotzdem nicht global deklarieren sondern sie ordentlich jeder Klasse die sie benutzen soll im Konstruktor oder sonst wo übergeben.. Du erzeugst doch den krassesten Spaghetti Code wenn von überall aus irgendwelche komischen Variablen verwendet werden für die man dann erstmal alle Dateien durchsuchen darf woher sie kommen und ob sie auch gerade in dem Moment den Zustand haben den sie haben sollten.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

18

14.06.2006, 21:13

Zitat von »"Spik)evil("«

Zitat von »"darkfrog"«

ich will aber nicht die klasse nochmal mit new aufrufen
ich will ein "globales" objekt dass dann in anderen klassen aufgerufen werden kann


Die solltest du dann aber trotzdem nicht global deklarieren sondern sie ordentlich jeder Klasse die sie benutzen soll im Konstruktor oder sonst wo übergeben.. Du erzeugst doch den krassesten Spaghetti Code wenn von überall aus irgendwelche komischen Variablen verwendet werden für die man dann erstmal alle Dateien durchsuchen darf woher sie kommen und ob sie auch gerade in dem Moment den Zustand haben den sie haben sollten.


Also dem kann ich nur zustimmen... Wenn du schon OOP programmierst, dann aber ordentlich! D.h. mit Vererbung usw! Da kann man dieses Problem der globalen Variablen leicht lösen!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

NicoH

Treue Seele

Beiträge: 89

Wohnort: Elsterwerda

Beruf: Student Informatik

  • Private Nachricht senden

19

15.06.2006, 18:15

ey das habe ich nicht bedacht das es hie rum php 5 geht ich war in 4 drin also sorry,...
mfg NicoH

3 Wichtige Regeln des Programmierers:
- Nur in der Nacht programmieren
- Viel Kaffe und kalte Pizza im Vorrat haben (Cola geht auch ;))
- Keine Freundin (sie stört im wichtigsten Augenblick)

Werbeanzeige