php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.06.2010, 09:15  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard Variable in allen Klassen verfügbar/änderbar?

Hallo,

habe folgenden Aufbau:

index.php
- Klasse a
- Klasse b
...

Also ne index, die mehrere Klassen anwendet. Jetzt habe ich in der index.php eine Variable $config beispielsweise.

Diese möchte ich jetzt in der index.php haben und in allen Klassen ebenfalls. Auch möchte ich wenn ich dort ne variable ändere, dass die für alle geändert ist.

Mein derzeitiger Versuch ist $config = $_GLOBALS['config']; in allen Klassen. Damit sind auch die Daten verfügbar.
Leider aber wenn ich in Klasse b was ändere, ändert sich das nicht automatisch in Klasse a.

Gibts dafür noch ne Lösung?

Danke
BartTheDevil89 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.06.2010, 09:17  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Klassenvererbung
Arne Drews ist offline  
Alt 06.06.2010, 09:27  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Ja ich hab ja in der index.php keine Klasse...das ist ne einfache Datei. Habs jetzt auch mal mit

global $config;

in der index.php versucht, aber das geht ja leider auch nicht.
Hat vielleicht noch einer einen Tipp?
BartTheDevil89 ist offline  
Alt 06.06.2010, 09:31  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Das hat doch nichts mit Vererbung zu tun, vielleicht zeigst Du mal Code aus der index.php
Arne Drews ist offline  
Alt 06.06.2010, 09:40  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

OK das ist meine index.php:

Code:
$config[] = ....ein array bestehend aus $config[wert1] =a;$config[wert2] = b;....
In Klasse a und b habe ich dann so integriert:

Code:
$config = $_GLOBALS[config];
Das Lesen läuft jetzt auch alles. Aber das Schreiben nicht. Denn ein

Code:
$config[wert1] = neuerwert;
ist zwar dann in der Klasse drin, aber nicht global.
BartTheDevil89 ist offline  
Alt 06.06.2010, 09:56  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ich weiß ehrlich gesagt noch nicht ganz, worauf Du hinaus willst, kann aber auch an mir liegen.
Flogendes zum Verständnis:
PHP-Code:
class ErsteKlasse {
  protected 
$VarErsterKlasse 0;

  public function 
GetVar() { echo $this->VarErsterKlasse; }
}

class 
ZweiteKlasse extends ErsteKlasse {
  public function 
AddVar() { $this->VarErsterKlasse++; }
}

$OBJ = new ZweiteKlasse;
$OBJ->GetVar();
$OBJ->AddVar();
$OBJ->GetVar(); 
Arne Drews ist offline  
Alt 06.06.2010, 10:06  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Ich glaub wir verstehen uns bisschen falsch^^...aber hab ne Lösung gefunden. Denn ich muss die Änderung einfach globalisieren innerhalb einer Klasse. Sieht dann also so aus:

PHP-Code:
$config["wert1"] = "neuerwert";
$GLOBALS['config'] = $config
Dann läuft alles korrekt...aber gibts vielleicht noch ne Möglichkeit das direkt zu globalisieren?
Also sowas?
PHP-Code:
$GLOBALS[config["wert1"]] = "neuerwert"
Denn bei der Variante jetzt meckert er leider mit dem syntax, aber wüsste auch nicht, wie ich das sonst setzen sollte.
BartTheDevil89 ist offline  
Alt 06.06.2010, 10:07  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 929
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard

Wie wäre es mit Referenzen?
PHP: Referenzen in PHP - Manual
ragtek ist offline  
Alt 06.06.2010, 10:30  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Oder mit dem Registry-Pattern?
Entwurfsmuster: Registry-Pattern - Beitrag - Webdeveloper-Blog - Daniel Stosch

[edit]
Vielleicht ist es aber auch nur ein Designfehler und du erklärst uns erstmal, wozu du das überhaupt brauchst.
Asipak ist offline  
Alt 06.06.2010, 11:11  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Ich würde das anders lösen.

Mache dir eine Klasse und nenne SystemConfigClass.php, so und da erstellst du dir sämtliche Methoden die du bracuhst. Den Methoden übergibst du natürlich die Member Variable.

Und dann in jeder Klasse bzw. Methode wo die bracuhst kannst du die entweder im Konstruktor verfügbar machen oder aber du übergibst diese den Methoden wo die sie wirklich nur bracuhst via Type Hint.

So würde ich das machen.

Kleines Beispiel (ungetestet)

PHP-Code:
error_reporting(E_ALL E_STRICT);
ini_set("display_errors"TRUE);

class 
SystemConfigClass{
    
    private 
$_var;
    private 
$_var2;
    
    public function 
__construct(){}
    
    public function 
methodVar($wert null){
        
        
$this->_var $wert;
        
        return 
$this->_var;
    }
    
    public function 
methodvar2($wert null){
        
        
$this->_var2 $wert;
        
        return 
$this->_var2;
    }
}

//klasse in der die anwendest
class SystemKomponent{
    
    private 
$_member1;
    private 
$_meber2;
    
    public function 
__construct(){}
    
    
//via type hint
    
public function editMethodOne(SystemConfigClass $configs){
        
        
$this->_member1 $configs->methodVar("blub");
        
        return 
$this->_member1;
    } 
}

$conf = new SystemConfigClass();

$memb = new SystemKomponent();

$membEdit $memb->editMethodOne($conf);

echo 
$membEdit
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de

Geändert von litterauspirna (06.06.2010 um 11:25 Uhr).
litterauspirna 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
Problem mit Umgang ovn Klassen Typhoon PHP Tipps 2010 6 19.04.2010 00:55
[Erledigt] sql - Variable ?? Exception PHP Tipps 2010 9 20.02.2010 04:03
[Erledigt] klassen variable setzen Ohrwurm83 PHP Tipps 2009 14 16.09.2009 10:30
Mehrere Klassen verknüpfen BlackJack01090 Software-Design 9 26.05.2009 20:43
Problem Undefined variable: banbanban PHP Tipps 2009 5 04.03.2009 17:55
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
Fragen zu Klassen Kein Genie PHP Tipps 2006 3 08.05.2006 11:25
PHPMailer findet eigene Variable net seejay PHP Tipps 2007 6 04.01.2006 12:55
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
Klassen PHP Tipps 2005 5 09.04.2005 18:51
[Erledigt] Fehlermeldung unterdrücken wenn keine variable übergeben... PHP Tipps 2005 6 20.03.2005 13:36
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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php variable in klasse verfügbar machen, http://www.php.de/php-einsteiger/68666-variable-allen-klassen-verfuegbar-aenderbar.html, php variable über mehrere klassen, php variable für mehrere klassen, php klassen variablen, php variablen in klassen, php globale variable änderbar, php variablen in klasse verfügbar machen, php variable in allen klassen verfügbar machen, php globale variablen in klassen, php class variable, php variablen über mehrere klassen, php variable verfügbar machen, globale variable für alle klassen, php variable in allen klassen verfügbar, php variable inerhalb klasse, php variable global verfügbar machen, php klassen globale variablen, variable in klasse php, php nicht änderbare variable

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:03 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