purzelbaum
unsere besten emails
Coder Board Community

 
Boardmenü
Forum
Portal

Registrieren
Suche
Statistik
Mitglieder
Team
Kalender
Sponsoren
Partner

F.A.Q

Lexikon
Amazon Shop
Unterforen Navigation
Hardware
Software
Betriebssysteme
Foren & CMS
EDV Sicherheit
Telekommunikation
Tutorials & FAQ's
Downloads
Boardsuche
Board durchsuchen:

Wer ist Online ?
Zur Zeit im Forum unterwegs:
- 0 Mitglieder
- davon 0 unsichtbar
- 16 Besucher
- 4 Bot(s)
- 20 Benutzer gesamt


Wer ist wo online?
Wer war Online ?
Heute waren 0 Mitglieder im Forum unterwegs.
Linktip's
   Eigene Projekte:
auto-board.info
film-freunde.info
flirt-freunde.info
linkhunter.info
tier-freunde.info
spass-forum.info
buch-freunde.info
mystic-freunde.de
heimwerker-freunde.de

   Befreundete Projekte:
holyhell.de
emsfriends.de

Coder Board Community » Coding » PHP » Wie kann ich mehrere Variablen automatisch in einer Funktion globalisieren? » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1]2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Wie kann ich mehrere Variablen automatisch in einer Funktion globalisieren?
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Prometheus Prometheus ist männlich
Administrator


images/avatars/avatar-9.gif

Dabei seit: 09.05.2003
Beiträge: 2.950

Wie kann ich mehrere Variablen automatisch in einer Funktion globalisieren? Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe eine Funktion die mir ein paar kleinigkeiten macht und aufgrund des gesamten Aufbaus des Projekts muss ich in der Funktion restlos alle Variablen die Seitenkomponenten beinhalten könnten immer globalisieren. Das heißt kommt ein Element dazu muss ich immer daran denken auch die Liste der globalisierten Variablen zu erweitern. Kann ich das nicht irgendwie automatisieren? Jedes mal mache ich was und denke erst nicht dran und wunder mich dann das es nicht funktioniert. Außerdem wär es schon toll wenn immer nur das globalisiert wird was ich grade benötige abhängig davon was aufgerufen wurde. Hat jemand schon mal sowas gemacht?

__________________
mfg
Prometheus

Projektoren

Grafikkarten

Fertig-PC´s

TFT´s

Notebooks
Ich gebe keinen Support per PN, Email oder sonstiges!
Alle Fragen können offen hier im Forum behandelt werden.

03.01.2008 18:56 Prometheus ist offline Homepage von Prometheus Beiträge von Prometheus suchen Nehmen Sie Prometheus in Ihre Freundesliste auf
Ebay
Zum Anfang der Seite springen

http://www.itratos.de
Spy
Member


images/avatars/avatar-193.jpg

Dabei seit: 16.09.2005
Beiträge: 127

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Kann man das nicht irgendwie mit einen Array lösen ? Was irgendwoher die Daten nimmt und dann erweitert?

__________________
Die Welt ist irgendwie total Buggy programmiert böse
03.01.2008 22:43 Spy ist offline E-Mail an Spy senden Beiträge von Spy suchen Nehmen Sie Spy in Ihre Freundesliste auf
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von Spy am 03.01.2008 um 22:43 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
Prometheus Prometheus ist männlich
Administrator


images/avatars/avatar-9.gif

Dabei seit: 09.05.2003
Beiträge: 2.950

Themenstarter Thema begonnen von Prometheus
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Keine Ahnung ich hab mir das schon paar mal durch den Kopf gehen lassen nur noch nie was brauchbares gefunden. Zu schade aber auch.

__________________
mfg
Prometheus

Projektoren

Grafikkarten

Fertig-PC´s

TFT´s

Notebooks
Ich gebe keinen Support per PN, Email oder sonstiges!
Alle Fragen können offen hier im Forum behandelt werden.

03.01.2008 23:51 Prometheus ist offline Homepage von Prometheus Beiträge von Prometheus suchen Nehmen Sie Prometheus in Ihre Freundesliste auf
Google
Zum Anfang der Seite springen

http://www.itratos.de
sourceforge
Bloody Newb


images/avatars/avatar-283.gif

Dabei seit: 19.01.2006
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

param übergabe per $_REQUEST oder $_GET. $_SESSION wäre auch möglich. das ganze packst in ein handliches array
innerhalb der klasse kannst dann vergleichen was vorhanden ist und was net und somit das fehlende ergänzen und globalisieren
08.01.2008 02:27 sourceforge ist offline E-Mail an sourceforge senden Beiträge von sourceforge suchen Nehmen Sie sourceforge in Ihre Freundesliste auf
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von sourceforge am 08.01.2008 um 02:27 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
badmoon2049 badmoon2049 ist männlich
Moderator


Dabei seit: 17.10.2005
Beiträge: 189
Herkunft: Leipzig

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

hätt ich auch vorgeschlagen per request auf die Vars zuzugreifen.. aber wie ich ihn verstanden hab will er in einer function variabeln globalisieren oder so..
08.01.2008 07:26 badmoon2049 ist offline E-Mail an badmoon2049 senden Homepage von badmoon2049 Beiträge von badmoon2049 suchen Nehmen Sie badmoon2049 in Ihre Freundesliste auf Fügen Sie badmoon2049 in Ihre Kontaktliste ein
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von badmoon2049 am 08.01.2008 um 07:26 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
Ebay
Zum Anfang der Seite springen

http://www.itratos.de
Prometheus Prometheus ist männlich
Administrator


images/avatars/avatar-9.gif

Dabei seit: 09.05.2003
Beiträge: 2.950

Themenstarter Thema begonnen von Prometheus
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja genau also das wird so nichts werden.

Mal ein Beispiel.

Ich hab eine PHP Datei in der wird zuerst eine Datei functions.inc.php includiert. In dieser sind diverse Funktionen enthalten unter anderem die Funktion myparse(). Jetzt wird in der PHP Datei mehreres aus einzelnen Textdateien geladen wie z.B. header, footer und content. Jedes einzelne Dokument schicke ich durch die Funktion myparse() und am Ende des ganzen ist dann eine Ausgabe. Zwischendrin wird das ganze noch evaluiert für die Ausgabe. Wenn ich nun in der Funktion die drei Variablen $header, $footer und $content globalisiere ist das kein thema dann sind am Ende alle drei Variablen auch noch gefüllt. Mache ich dies jedoch nicht dann ist der Inhalt weg. In meinem Fall habe ich nun allerdings nicht drei Variablen sondern pro Seite ca. 10-20 Variablen. Und damit ich nicht für jede Seite eine Funktion schreiben muss sind das bei 10 Seiten etwa 100 Variablen. Diese muss ich nun komplett alle globalisieren damit das ganze läuft.

Meine Idee war es jetzt irgendwie was zu nutzen was automatisch in einer Funktion schaut "Wenn Variable nicht leer dann globalisiere" oder irgendwas in der Richtung. Ich hab schon versucht alle verwendeten Variablen in ein Array zu packen und dann das Array ansich zu globalisieren. Das wär auch noch nicht die perfekte Lösung aber auch das hat nicht funktioniert.

__________________
mfg
Prometheus

Projektoren

Grafikkarten

Fertig-PC´s

TFT´s

Notebooks
Ich gebe keinen Support per PN, Email oder sonstiges!
Alle Fragen können offen hier im Forum behandelt werden.

08.01.2008 08:39 Prometheus ist offline Homepage von Prometheus Beiträge von Prometheus suchen Nehmen Sie Prometheus in Ihre Freundesliste auf
davil davil ist männlich
Newb


Dabei seit: 07.04.2004
Beiträge: 30
Herkunft: Wien

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich weiß nicht, ob es für die Antwort etwas zu spät ist, aber vielleicht hilft das ja noch:

Wenn du die Namen der Variablen im Parser kennst, kannst du sie prinzipiell ganz einfach globalisieren:
code:
1:
2:
3:
4:
// variable $header globalisieren
$varname = 'header';
global $$varname;

Der Vorteil dieser Lösung liegt darin, dass du viele Variablen in einer Liste durchgehen und dynamisch globalisieren kannst.

Falls du woanders nachschauen willst, welche Variablen du so globalisiert hast, würde ich empfehlen, die Namen der Variablen einfach an eine globale String-Liste zu hängen:
code:
1:
2:
3:
global $global_list;
$global_list .= ';'.$varname;

Damit erhältst du eine Semikolon-getrennte Liste (';header;footer;irgendwas'), die du jederzeit per explode() auftrennen und dann wieder alle enthaltenen Variablennamen globalisieren kannst - voila ;-)


Ich persönlich würde in diesem fall allerdings auf die mächtigen Möglichkeiten der Objektorientierung in PHP zurückgreifen und eine kleine statische Klasse bauen, der ich per set() und get() beliebige Name/Werte-Paare zuweisen und abfragen kann:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
class data {
	private static $properties = array();
	
	public static function set($name, $value) {
		self::$properties[$name] = $value;
	}
	
	public static function get($name) {
		return (isset(self::$properties[$name])) ? self::$properties[$name] : '';
	}
	
	public static function getAll() {
		return self::$properties;
	}
}

Der Teil:
code:
1:
2:
return (isset(self::$properties[$name])) ? self::$properties[$name] : '';

ist so gemacht, damit NULL-Werte als leerer String zurückkommen. Wenn das nicht notwendig ist, reicht natürlich:
code:
1:
2:
return self::$properties[$name];


Diese Daten könnten dann z.B. so zugewiesen und woanders wieder ausgelesen werden:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
function a() {
	// hier wird was gesetzt
	data::set('header', $header);
}

function b() {
	// hier wird was anderes gesetzt
	data::set('footer', $footer);
}

function c() {
	// wir wollen alle variablen haben
	$data = data::getAll();
	foreach ($data as $name => $value) {
		$$name = $value;
	}
	// $header und $footer sind ab jetzt in dieser function verfügbar
}


__________________
~~~ ihr seid alle krank! ~~~ großes Grinsen

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von davil: 31.03.2008 14:12.

31.03.2008 14:06 davil ist offline E-Mail an davil senden Homepage von davil Beiträge von davil suchen Nehmen Sie davil in Ihre Freundesliste auf Fügen Sie davil in Ihre Kontaktliste ein
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von davil am 31.03.2008 um 14:06 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
Affilimatch
Zum Anfang der Seite springen

http://www.itratos.de
Prometheus Prometheus ist männlich
Administrator


images/avatars/avatar-9.gif

Dabei seit: 09.05.2003
Beiträge: 2.950

Themenstarter Thema begonnen von Prometheus
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Antwort kommt auf keinen Fall zu spät. Das Projekt wo ich das nutzen wollte bzw. auch schon nutze habe ich aufgrund von akutem Zeitmangel noch gar nicht großartig weiter entwickelt. Es läuft zwar so wie ich mir das dachte (mehr oder weniger) gut aber ich teste das dennoch mal. Jedes mal wenn ich bloß eine Seite erweitern möchte muss ich dran denken restlos alle Funktionen anzupassen und vor allem auch prüfen das ich keine Variablen doppelt verwende und so.

Sobald ich dazu komme werd ich mal ne Runde damit rum testen. Ich sollte in den nächsten Tagen auch meine Adobe Creative Suite 3 Web Premium bekommen und soweit ich gelesen habe soll der DreamWaver ja inzwischen gewaltig weiter sein auch was PHP betrifft. Mal sehen ob ich da endlich in der Lage bin vorgefertigte Codeteile anzulegen.

__________________
mfg
Prometheus

Projektoren

Grafikkarten

Fertig-PC´s

TFT´s

Notebooks
Ich gebe keinen Support per PN, Email oder sonstiges!
Alle Fragen können offen hier im Forum behandelt werden.

31.03.2008 19:21 Prometheus ist offline Homepage von Prometheus Beiträge von Prometheus suchen Nehmen Sie Prometheus in Ihre Freundesliste auf
Prometheus Prometheus ist männlich
Administrator


images/avatars/avatar-9.gif

Dabei seit: 09.05.2003
Beiträge: 2.950

Themenstarter Thema begonnen von Prometheus
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nun, also ich habe bei einem Kundenauftrag nun das gleiche Problem. Ich habe 20 Funktionen und in fast jeder Funktion muss ich die Variablen alle samt manuell globalisieren. Ändert sich nun was muss ich bei jeder Funktion überlegen ob die Variable dort globalisiert werden muss.

Die Lösung hier habe ich leider nicht so ganz verstanden. Ich schreibe mal ein Beispiel was ich habe und dann kann mir jemand der das verstanden hat bitte mal schreiben wie das aussehen müsste.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
// Funktion 1
function abc($var1$var2$var3) {
global $glob1$glob2$glob3$glob4;
// irgendwas was hier passiert
}
// Funktion 2
function def($var4$var5$var6) {
global $glob2$glob4$glob5$glob6;
// irgendwas was hier passiert
}

Wie schaffe ich es nun hier mit möglichst nur einem Aufruf einfach in beiden Funktionen alles zu globalisieren? Es spielt ja keine Rolle hauptsache ich verwende jede Variable wirklich nur für einen Zweck. Und da das gegeben ist sollte das machbar sein.

__________________
mfg
Prometheus

Projektoren

Grafikkarten

Fertig-PC´s

TFT´s

Notebooks
Ich gebe keinen Support per PN, Email oder sonstiges!
Alle Fragen können offen hier im Forum behandelt werden.

23.08.2008 11:52 Prometheus ist offline Homepage von Prometheus Beiträge von Prometheus suchen Nehmen Sie Prometheus in Ihre Freundesliste auf
Google
Zum Anfang der Seite springen

http://www.itratos.de
imset imset ist männlich
Bloody Newb


images/avatars/avatar-298.jpg

Dabei seit: 28.08.2008
Beiträge: 5

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So hallo erst mal ^^

Also ich glaub ich versteh dein Problem, das kannst du ganz einfach über 2 Wege lösen:

a) Fals dein Script noch nicht zu gigantisch ist:

Benutze doch einfach die Superglobale $GLOBALS. Das ist ein Array von dem aus du jede Variable deines Scripts z.B. in Funktionen global aufrufen kannst. Hier ne Beschreibung .http://us2.php.net/manual/de/reserved.variables.globals.php


b) Fals dein Script zu groß ist als das es sich lohnen würde alles zu ändern:
Beschäftige dich mal mit der OOP(objekt orientierten programierung) von PHP, da solltest du solche Probleme erst garnicht bekommen.
.http://www.php.net/manual/de/language.oop5.php
28.08.2008 01:02 imset ist offline E-Mail an imset senden Homepage von imset Beiträge von imset suchen Nehmen Sie imset in Ihre Freundesliste auf
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von imset am 28.08.2008 um 01:02 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
Prometheus Prometheus ist männlich
Administrator


images/avatars/avatar-9.gif

Dabei seit: 09.05.2003
Beiträge: 2.950

Themenstarter Thema begonnen von Prometheus
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Also das mit der Superglobalen ist echt ne geniale Sache. Hatte gar nicht gewusst, dass es sowas gibt. Mein Skript ist zwar doch schon ganz schon angewachsen aber ich nutze den Dreamwaver CS3 und kann alle Dateien laden und übergreifen mit Suchen und Ersetzen arbeiten. Sollte also insgesamt recht schnell gehen.

Das mit dem OOP hab ich schon länger vor aber bin noch nicht recht dazu gekommen. Grundlagen hab ich davon ja aber wenn man PHP in Version 3.x gelernt hat fehlen einem leider so mansche Dinge die jetzt in V5 möglich sind.

EDIT:
Nun, ich habe grade schon das erste Problem festgestellt beim Anwenden von $Golbals. Ich habe eine Funktion welche einen mini Templateparser darstellt. Das heißt ich übergebe das gewünschte Template und die Funktion ließt dieses nun ein und evaluiert es und ich bekomme das Ergebnis als return welches ich dann wiederum per echo ausgebe. Ich habe nun als Beispiel eine Variable $OuterTableWidth welche in einer Datei "settings.inc.php" festgelegt wird. Wie wende ich denn $Globals an, wenn in der Funktion mit der Variable gar nicht gearbeitet wird allerdings im entsprechenden Template? Muss ich dann in jedem Template alles umschreiben und $GLOBALS[OuterTableWidth] angeben oder wie ist es dann absolut korrekt?

__________________
mfg
Prometheus

Projektoren

Grafikkarten

Fertig-PC´s

TFT´s

Notebooks
Ich gebe keinen Support per PN, Email oder sonstiges!
Alle Fragen können offen hier im Forum behandelt werden.

28.08.2008 08:32 Prometheus ist offline Homepage von Prometheus Beiträge von Prometheus suchen Nehmen Sie Prometheus in Ihre Freundesliste auf
Google
Zum Anfang der Seite springen

http://www.itratos.de
imset imset ist männlich
Bloody Newb


images/avatars/avatar-298.jpg

Dabei seit: 28.08.2008
Beiträge: 5

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Versteh deine Problematik leider grad nicht so ganz, vieleicht kann ich dir aber weiterhelfen wenn du mal den Code dazu postest Augenzwinkern
28.08.2008 13:48 imset ist offline E-Mail an imset senden Homepage von imset Beiträge von imset suchen Nehmen Sie imset in Ihre Freundesliste auf
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von imset am 28.08.2008 um 13:48 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
Seiten (2): [1]2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Coder Board Community » Coding » PHP » Wie kann ich mehrere Variablen automatisch in einer Funktion globalisieren?

Views heute: 1.739 | Views gestern: 7.372 | Views gesamt: 15.682.021



Impressum

Board Blocks: 46.035 | Spy-/Malware: 1.245.611.449.400.000.000.000.000.000 | Bad Bot: 0 | Flooder: 21.847
CT Security System Pre 6.0.1: © 2006-2007 Frank John

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH

Style & Graphics © 2004-2005 by Technomausi