php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.04.2007, 17:25  
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 206
phpbeginner
Standard Variablen in der Klasse überschreiben

Hallo,

PHP-Code:

class test
{
        var 
$vorname;

        function 
test()
        {
              
$this->vorname 'Natalie';
        }

    function 
setName($name,$wert)
    {
        
$this->$name $wert;
    }
}

$p = new test();
$p->setName('vorname','Tanja');
?> 
Jetzt soll der Vorname "Natalie" doch durch "Tanja" überschrieben werden, tut es aber nicht. Was mache ich falsch?
__________________
Ich lerne PHP und es macht mir Spass!
phpbeginner ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.04.2007, 17:36  
Erfahrener Benutzer
 
Registriert seit: 11.07.2004
Beiträge: 269
function
function eine Nachricht über ICQ schicken
Standard

das liegt wohl daran, das du im aufruf von setName mit $name nicht die variable vorname ansprichst sondern einen string "vorname" übergibst.
lösung wäre:
PHP-Code:
function setName($wert)
{
    
$this->vorname $wert;

__________________
Es ist ein großer Trost, andere dort scheitern zu sehen, wo man selbst gescheitert ist. (William Somerset Maugham)
function ist offline  
Alt 12.04.2007, 17:44  
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 206
phpbeginner
Standard

meinst du so ?
PHP-Code:
function setName($name,$wert)
{
    
$this->name $wert;

ich hab ca. 20 Variablen drin, ich kann doch nicht für jede einzelne Funktion schreiben
__________________
Ich lerne PHP und es macht mir Spass!
phpbeginner ist offline  
Alt 12.04.2007, 17:45  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo phpbeginner,

wenn du generische getter und setter implementieren möchtest musst du das so machen (Beispiel ist der Klasse coreObject entnommen, eine Klasse, von der alle meine Klassen erben):

PHP-Code:
<?php
      
function get($Attribute){

         if(isset(
$this->{'__'.$Attribute})){
            return 
$this->{'__'.$Attribute};
          
// end if
         
}
         else{
            return 
null;
          
// end else
         
}

       
// end function
      
}

      function 
set($Attribute,$Value){
         
$this->{'__'.$Attribute} = $Value;
       
// end function
      
}
?>
Damit kannst du alle Klassen-Variablen die "__{NAME}" (Beispiel: "__ParentObject") heißen setzen und auslesen. Wenn du die Unterstriche nicht haben möchtest, dann ändere die Methoden einfach nach gusto.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 12.04.2007, 17:50  
Erfahrener Benutzer
 
Registriert seit: 26.07.2006
Beiträge: 121
JumperII
Standard

Hmmmm ..... wäre es dann nicht sinnvoller, die Daten in einen Container zu halten?

PHP-Code:
class test
{
    var 
$container;

    function 
test() {
        
$this->container['vorname'] = 'Natalie';
    }

    function 
setValue$name$wert) {
        
$this->container[$name] = $wert;
    }

    function 
getValue$name) {
        return( 
$this->container[$name]);
    }

Gruß,
Jumper, the II.
JumperII ist offline  
Alt 12.04.2007, 19:36  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

hmm, davon mal unabhängig sollte das Ausgangsbeispiel eigentlich funktionieren und tut es auch, jedenfalls bei mir - php 4.3. Ist doch auch alles korrekt $this->$variable ist ja nun auch nix anderes als die Version mit den geschweiften Klammern (bis auf deren Mehrfunktionalität).
nikosch ist offline  
Alt 12.04.2007, 19:57  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo nikosch77,

ich hatte das gleiche Problem und habe deshalb nach einem Tipp auf php.net gesucht und bin fündig geworden. Kann sein, dass ich das schon vor 4.3 implementiert hatte...
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 12.04.2007, 20:03  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Gut zu wissen. Da fängt man direkt an zu grübeln, ob man solche Konstrukte schon mal verwendet hat.
nikosch 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
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
[Erledigt] Alle Variablen in Klasse gleich? PHP-Fortgeschrittene 12 18.07.2005 10:12
[Erledigt] Führerschein für Klasse A+B.. Preis OK??? Off-Topic Diskussionen 20 13.07.2005 18:44
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Klasse holt sich die Klasse PHP-Fortgeschrittene 9 07.10.2004 11:53
[Erledigt] Brauche Hilfe bei meiner ersten Klasse PHP-Fortgeschrittene 9 24.09.2004 17:09
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46
Variablen in eine Klasse "importieren"??? zwelch PHP Tipps 2004 4 02.08.2004 14:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
variablen der classe überschreiben, php __set überschreiben, php variable in set überschreiben, überschreiben von variablen in einer klasse, php class überschreiben

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