php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.05.2006, 13:53  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard Generell Variable als "global" setzen möglich ?

Hallo,

Ich fang mal vorne an:

Wenn man im php-Dokument eine Datei "included" kann man mit den Variablen arbeiten.
Sobald man aber in einer Function mit dieser Variablen arbeiten will ist erstmal Schluss. Hier muss man dann diese Variable als "global" setzen oder die Datei in der Function nochmal includen.
(Zumindest hab ich das bis jetzt so verstanden ...)

Kann man sich das irgendwie sparen und Variable generell als "global" setzen ?

Besten Dank schonmal im voraus.

Matthias
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.05.2006, 13:59  
Gast
 
Beiträge: n/a
Standard

$GLOBALS ist überall verfügbar und enthält alle Variablen des global scopes.
PHP-Code:
<?php
$a 
'abc';

function 
xyz() {
    echo 
'->'$GLOBALS['a'];
}
xyz();
?>

Aber eigentlich braucht man das nicht. Durch unnötig "importierte" Variablen verursachte Fehler sind verdammt ärgerlich weil oft schwer auffindbar.
 
Alt 17.05.2006, 13:59  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Kann man, ist aber nicht empfehlenswert, also lass es gleich wieder. Wenn du eine Funktion hast, die nicht alle benötigten Informationen als Parameter akzeptiert, dann ist da irgendwas faul mit der Funktion. Du kannst die superglobale $_GLOBALS verwenden.

Aber wie gesagt: Lass es lieber, denn das ist ein Fehlerpool ohne Ende.

Achja: Eine Datei mehrfach includen is noch eine schlechtere Idee
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 17.05.2006, 14:22  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Meine Herrn, seid Ihr schnell !

Das mit $GLOBALS scheint wunderprächtig zu funktionieren ...

Warum sollte man das also nicht nehmen ?

Hintergrund:
Ich hab mir einen GPL-Code Formmailer runtergeladen. Dummerweise werden die echo's bei falsch ausgefülltem Formular in Englisch ausgegeben. (Die echos stecken mitten in verschiedenen functions ...)
Und somit dachte ich, ich zieh mir die echos aus einer Datei und fummel nicht bei jeder Rechtschreibreform mitten in der function rum ...
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Alt 17.05.2006, 14:39  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Zitat:
Warum sollte man das also nicht nehmen ?
FEHLERQUELLE! Dachte, ich hätte das erwähnt. Das is Flickschusterei und wird zu Problemen führen...

Mal ne Idee zum drüber nachdenken: Du machst nen array mit den Übersetzungen und das übergibst du dann dem Formmailer Beispiel:
PHP-Code:
// Vorher:

function sendMail ($msg) {
  
// Blafasel
  
echo "Message sent";
}


// Nachher

$lng['de']['msg_sent'] = "Nachricht gesendet";
function 
sendMail ($msg,$lng,$uselng 'de') {
  
// Blafasel
  
echo $lng[$uselng]['msg_sent'];

__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 17.05.2006, 15:44  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Hallo KingCrunch,

also entweder ich stell mich nur an, oder wir reden aneinander vorbei ...
(OK, ich tipp auf ersteres ... )

Der folgende Code funktioniert nicht:
PHP-Code:
<?php

$lng
['de']['msg_sent'] = "Nachricht gesendet - aussen";

function 
sendMail2 ($uselng) {
  
// Blafasel
  
echo $lng[$uselng]['msg_sent'];
}

sendMail2(de);
?>
Der folgende Code funktioniert:
PHP-Code:
<?php
function sendMail2 ($uselng) {
$lng['de']['msg_sent'] = "Nachricht gesendet - innen";
  
// Blafasel
  
echo $lng[$uselng]['msg_sent'];
}

sendMail2(de);
?>
Irgenwie tret ich auf der Stelle. Wie kann ich nun meine Echo-Meldung ausserhalb der function definieren und innerhalb der function verwenden ?
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Alt 17.05.2006, 16:04  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Gib mal 'n String mit
M3g4Star ist offline  
Alt 17.05.2006, 16:04  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Du hast meinen Code nicht aufmerksam gelesen :P
Ich übergebe $uselng nur dafür, falls man mal auf die Idee kommt mehr als eine Sprache zu implementieren.
Das eigentliche Sprach-Array ist $lng, welches du vollständig ignoriert hast in deiner Funktionsdefinition
Einfacher (ohne mehrfache Sprachauswahl) sähe es dann so aus
PHP-Code:
$lng['msg_sent'] = "Nachricht gesendet";
function 
sendMail ($msg,$lng) {
  
// Blafasel
  
echo $lng['msg_sent'];

Vielleicht wird es jetzt ein wenig deutlicher, worauf ich hinaus will
KingCrunch ist offline  
Alt 17.05.2006, 16:36  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Hallo KingCrunch,

OK, ich glaub ich habs verstanden ...

So in der Art könnte es ja dann am Ende aussehen:

myvars.php
PHP-Code:
<?php
$uselng 
de;

$lng['de']['msg_sent'] = "Nachricht gesendet";
$lng['en']['msg_sent'] = "Message sent";
$lng['by']['msg_sent'] = "i hobs gschiggd";

?>
formmail.php
PHP-Code:
<?php
include 'myvars.php';

function 
sendMail ($lng,$uselng) {
  
// Blafasel
  
echo $lng[$uselng]['msg_sent'];
}
sendMail($lng,$uselng);
?>
Besten Dank !
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Alt 17.05.2006, 16:43  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Wenn du hier error_reporting(E_ALL) setzt wird's dich anmeckern !!!!!

und zwar deswegen :

PHP-Code:
<?php
$uselng 
de;
?>
Überliest mein kurzes Posting einfach oder was geht !?!?!??

M3g4Star ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable mit externen Inhalt setzen? errox PHP Tipps 2008 7 30.05.2008 21:39
Variable setzen außerhalb von der Klasse phpbeginner PHP Tipps 2007 13 28.03.2007 14:09
mit link variable setzen und funktion ausfürhen PHP Tipps 2005-2 4 07.09.2005 16:36
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
2 Tabellen abfragen und dann variable unterschiedlich setzen Anuschka PHP Tipps 2004-2 2 22.12.2004 02:46
[Erledigt] Session Variable setzen und Link per click auf ein Image PHP Tipps 2004 7 23.08.2004 20:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php global setzen, php globals setzen, $globals setzen, variable global setzen, globale variable definieren php, php setzen einer globalen variable $_globals, php variaplen gobal nutzen, php variable global definieren, generell und global, php variable auf global setzen, php variable überall verfügbar, php überall verfügbare variable, $globals php setzen, php globale setzen, php variable überall, php alle variablen global, variable überall php, c variable globals etzen, php global function an erster stelle, variable global setzen php

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.