php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.03.2009, 09:44  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Mit Global hat man die Möglichkeit - wie der Name schon sagt - eine Variable zu globalisieren.
Falsch. Mit den Schlüsselwort global bekommst du die Möglichkeit eine Variable aus dem globalen Bereich in den lokalen Bereich zu referenzieren. D.h.

PHP-Code:
<?
$test 
3;

function 
tuwas(){
  
$test 5;
  global 
$test;
}

tuwas();
echo 
$test;  // gibt 3 aus
PHP-Code:
<?
$test 
3;

function 
tuwas(){
  global 
$test;
  
$test 5;
}

tuwas();
echo 
$test// gibt 5 aus
cycap ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 03.03.2009, 10:13  
Benutzer
 
Registriert seit: 30.11.2008
Beiträge: 49
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ahh okay, verstanden!

Das heißt das Global müsste direkt an den Anfang der Funktion, sehe ich das richtig?
Damit baue ich einen Bezug auf die globale Ebene auf.

Das was ich meine wäre ja dann static, oder?

MfG
Michael
Fireball22 ist offline  
Alt 03.03.2009, 10:27  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

wieso benutzt du nicht einfach den Rückgabewert? Dazu is der doch da
cycap ist offline  
Alt 03.03.2009, 11:53  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Entweder du verwendest hier den Rückgabewert oder du schreibst deine Werte in ein Superglobales Array. Eine Variable als global zu definieren ist IMHO keine saubere Wahl
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 03.03.2009, 12:00  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Oder call by reference, was die meisten vergessen. Aber Rückgabewert reicht ja vollkommen aus.
cycap ist offline  
Alt 03.03.2009, 14:53  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Hab jetzt nicht deinen Ansatz gelesen, aber soviel wie ich sehe, erkenne ich bereits, dass er falsch ist. Ich bin sowieso der Meinung, dass man eigentlich keine Globals braucht und diese nur zu schlechtem Code führen.

Es gibt mehrere saubere Möglichkeiten den Fehler weiterzugeben
PHP-Code:
function test1 ( &$error NULL #oder false, nach Belieben
{
    
//...

PHP-Code:
function test1 ()
{
    
//...
    
throw new Exception('Fehler..');
}
try {
    
test1();
} catch (
Exception $e) {
    
//.. Fehlerbehandlung

Oder du verwendest eben gleich den Rückgabewert, der eignet sich aber eher wenn es verschiedene Möglichkeiten vor Erfolg gibt. Da man grundsätzlich mit true = Erfolg und false = Fehler rechnet, in Zahlen dann >=1 = Erfolg, 0 = Fehler...
__________________
Phoscur ist offline  
Alt 03.03.2009, 15:01  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

call by reference... hab ich schon gesagt, aber naja, jetzt hat er halt noch nen beispiel
cycap ist offline  
Alt 03.03.2009, 15:08  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich finde zwar auch, dass Du besser nicht mit der globalen Variable arbeiten solltest, aber der Vollständigkeit halber:
sobald global $error ausgeführt wird, ist die lokale Variable $error, die Du vorher benutzt hast, "weg"; der Wert wird nicht automatisch in den globalen Kontext übertragen.
PHP-Code:
<?php
$error 
'bar';

function 
foo() {
  
$error 'test';
  
  if (
$error) {
      global 
$error;
    echo 
'foo: '$error"<br />\n";
  }
}

foo();
echo 
$error;
Zitat:
foo: bar
bar
Du müsstest nachdem der globale Kontext hergestellt ist, einen Wert zuweisen
PHP-Code:
<?php
function foo() {
  
$msg 'test';
  
  if (
$msg) {
    global 
$error;
    
$error $msg;
  }
}

foo();
echo 
$error;
David ist offline  
Alt 03.03.2009, 15:18  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

ähm David, #11.... so viel zur Vollständigkeit
cycap ist offline  
Alt 03.03.2009, 15:39  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

übersehen.
David 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 per Session übergeben? Spricht etwas dagegen? Lapje PHP Tipps 2008 6 20.10.2008 21:49
Undefined variable Undefined property: block xxJJxx PHP Tipps 2008 16 05.08.2008 15:30
problem mit variable snatch-ic PHP Tipps 2007 5 13.12.2005 13:18
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
[Erledigt] Variable wird nicht erkannt bzw ausgegeben. PHP Tipps 2005-2 4 25.10.2005 18:54
Variable als Variable behandeln ohne den Wert zu verwenden Pain-maker PHP Tipps 2005-2 4 11.09.2005 17:28
Variable in Objekt php1 HTML, Usability und Barrierefreiheit 2 25.06.2005 08:08
[Erledigt] Variable in DB Datenbanken 1 17.04.2005 15:01
Variable in Variable Matthiasnet PHP Tipps 2005 6 20.03.2005 23:28
If variable $1 vorhanden dann nimm die, if variable $2 .... PHP Tipps 2005 8 13.02.2005 20:16
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
[Erledigt] $_SESSION verwandelt variable auf einem Server in ein Array PHP-Fortgeschrittene 2 16.12.2004 13:25
2 Schleifen durchlaufen PHP Tipps 2004 1 14.09.2004 14:33
variable Variablen requesten PHP Tipps 2004 5 08.06.2004 20:34


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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