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

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

1

10.09.2005, 10:19

PHP: "Extern" globale Variablen implementieren?

Hi!.

Ich suche schon ne ganze weile im INet kann aber nichts dazu finden.
Mein Problem ist, dass ich eine extern globale Variable, also eine Variable die in allen Source-Dateien verwendet werden kann benötige.
Ich komme leider nicht dahinter wie man das machen kann.
Vielleicht weiß weiß einer von euch wie das geht?

mfg Philipp

Anonymous

unregistriert

2

10.09.2005, 11:49

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* global.h */
extern int global;

/* main.c */
#include "global.h"
int global;

int main()
{
  globa += 2;
  return 0;
}

/* bla.c */
#include "global.h"

void foo( void )
{
   global += 3;
}
[/cpp]

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

3

10.09.2005, 11:56

Wie man das in C macht weiß ich.
Ich brauche es aber für PHP!!!

mfg Philipp

Sicaine

unregistriert

4

10.09.2005, 14:04

Mussu includedatei verwenden für jede Datei ala

include('config.inc.php');

Ich würd mich aber mal auf eine Sprache beschränken ;-)

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

5

10.09.2005, 15:09

Zitat von »"Sicaine"«


Ich würd mich aber mal auf eine Sprache beschränken ;-)


Würde ich, wenns nach mir ginge, geht es aber leider nicht :wirbel:

mfg Philipp

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

10.09.2005, 21:33

Du musst nicht in jeder Datei, in der auf die globale Variable zugegriffen wird, die Datei includieren, in der die Datei deklariert bzw. definiert wird. Sobald die Variable deklariert/definiert/gesetzt wird, ist sie global definiert, also auch global verwendbar.
Wenn Du's doch tun willst, solltest Du require_once benutzen.
Was Du nur beachten musst, ist, dass Du die Variable in Funktionen als global deklarieren musst, ansonsten geht PHP davon aus, dass es sich um eine weitere Variable innerhalb der Namensumgebung der Funktion handelt:

Quellcode

1
2
3
4
5
6
7
8
9
10
$myGlobalVar = 77;

/*  ...
    ...
    ...  */

function foo() {
    global $myGlobalVar;
    echo $myGlobalVar;
}

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

7

10.09.2005, 22:48

Wenn es geht, möchte ich die verwendung von Includes vermeiden.
Mein Code sieht derzeit (vereinfacht) so aus

Quellcode

1
2
3
4
5
6
7
//Login.php

<?php
global $connection;
$connection = NewADOConnection($dbtype);
$connection->Connect($host, $user, $pwd, $db); //Verbindung aufgebaut
?>


Quellcode

1
2
3
4
5
6
7
//Edit.php

<?php
global $connection;
$result = $connection->Execute($sql); //Daten abfragen
...
?>


In der Zeile
$result = $connection->Execute($sql)
bekomme ich immer einen Fehler, der mir sagt, dass $connection keine Objekt ist.
Was muss ich an meinem Code noch ändern, damit $connection in Edit.php gültig ist?

mfg Philipp

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

8

11.09.2005, 10:02

So ich konnte es nun selbst Lösen und zwar mittels Sessions.

Quellcode

1
2
3
4
5
6
7
//Login.php
<?php
  session_start();
  $_SESSION['_username']=$username;
  $_SESSION['_password']=$password;
   ...
?>


Quellcode

1
2
3
4
5
6
7
//Edit.php
<?php
  session_start();
  $username = $_SESSION['_username'];
  $password=$_SESSION['_password']
  ...
?>


Noch ein paar Hinweise: Sessions sind anscheinend nicht in der Lage irgendwelche komplexen Datentypen an andere Skripts zu übergeben, deswegen übergebe ich auch nur username und password und erzeuge die Verbindung zu der Datenbank in jedem Skript neu.
Und session_start muss vor allem anderen kommen.

mfg Philipp

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

11.09.2005, 11:59

Ich weiss nicht, welche PHP-Version Du verwendest. Bei PHP 5 gibt es auf jeden Fall die "magische" Funktion __autoload:

Quellcode

1
2
3
function __autoload($class_name) {
   require_once $class_name . '.php';
}

Wenn Du jetzt ein neues Objekt erzeugst, wird automatisch die entsprechende Datei eingebunden (vorausgesetzt, die Datei, in der die Klasse XYZ steht, hat den Namen xyz.php).
So kannst Du zum größten Teil auf include, require etc. verzichten.

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

10

11.09.2005, 12:16

Ich verwende PHP5.

Ich bleib jetzt aber bei meiner Lösung auch wenn sie nicht gerade elegant ist. Die Seite besteht aus 4 php-scripts, ist also wirklich klein und daher reicht es, wenn etwas auf die umständliche und langsame Art u. Weise gemacht wird ;).

mfg Philipp

Werbeanzeige