Portal > Foren > PHP > PHP-Programmierung > [PHP5/OOP] Rückgabe einer Klassenvariable
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 12.07.2006, 19:12 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 08.07.2006
Beiträge: 7
Standard [PHP5/OOP] Rückgabe einer Klassenvariable

Hallo,

ich habe mir ein wenig Gedanken darüber gemacht, meinen Code (u.a. innerhalb der Klassen) besser zu strukturieren, übersichtlicher und effizienter zu machen.

Dabei sind mir zwei mögliche Wege eingefallen, eine bestimmte Variable innerhalb einer Klasse zurück zu geben.

Variante A (die klassiche
PHP-Code:
<?php
class Test
{
    private 
$myvar;
    private 
$anothervar;
    
    public function 
getMyVar()
    {
        return 
$myvar;
    }
    
    public function 
getAnotherVar()
    {
        return 
htmlentities($anothervar);
    }
}
?>
Variante B:
PHP-Code:
<?php
class Test
{
    private 
$myvar;
    private 
$blubb;
    private 
$anothervar;
    
    public function 
__get($var)
    {
        if(
$var == 'myvar' || $var == 'blubb')
        {
            @return 
$this->Test[$var];
        }
        else
        {
            @return 
htmlentities($this->Test[$var]);
        }
    }
}
?>
Hinweis:
Die Namen sind sinnfrei gewählt und dienen nur beispielhaft, son Mist würde niemals in meinen Projekten auftauchen

Eigene Überlegungen:
- Variante A ist übersichtlicher, wobei auf diese Weise auch Unmengen Code produziert wird
- Variante B ist kompakter, man muss sich allerdings erst kurz einarbeiten um hinter die (relativ) einfache Logik zu kommen, zugleich stellt sich die Frage der Performance, da dort erst noch zusätzliche Überprüfungen stattfinden

Ziel des ganzen:
Ich wäre sehr dankbar, wenn ich ein paar Meinungen hören (lesen) könnte, wobei folgende Gesichtspunkte im Vordergrund stehen:
- Übersichtlichkeit
- Vor-/Nachteile für die Struktur
- Performance (auch Kleinvieh macht Mist)

Natürlich macht das ganze, vorallem im Hinblick auf die derzeitige Größe meiner Projekte im Bezug auf die Performance keinen großen Unterschied, jedoch denke ich auch längerfristig. Damit will ich sagen, dass gerade das Kleinvieh bei 10.000 Seitenaufrufen einen erheblichen Performancenachteil mit sich ziehen kann als auch ich etwas lernen kann.

Gruß
dtdesign
dtdesign ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.07.2006, 19:20 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.512
Standard

Vielleicht saugst du da ein paar Infos raus?
http://forum.developers-guide.net/showthread.php?t=3717

Die Nutzung von setter-/getter-Methoden anstatt __get/__set wird von mir bevorzugt, allerdings scheint mir das in der "PHP-Welt" Geschmackssache zu sein.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.07.2006, 21:54 Nach oben    #3
Jay
Gast
 
Beiträge: n/a
Standard

Zitat:
Die Nutzung von setter-/getter-Methoden anstatt __get/__set wird von mir bevorzugt, allerdings scheint mir das in der "PHP-Welt" Geschmackssache zu sein.
__get ist ja auch für die dynamische generierung von Klassenvariablen z.B. um ein Array als einzelne Membervariablen zugänglich zu machen. Ansonsten sind getter Methoden klar zu bervorzugen
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.07.2006, 11:54 Nach oben    #4
Waq
Erfahrener Benutzer
 
Registriert seit: 18.08.2005
Beiträge: 108
Standard

Getter Methoden sind eigentlich in die Tonne zu treten.

http://www.phpfriend.de/forum/viewto...er=asc&start=0
Man beachte meine (und Sike's) Postings und v.a. den Link in meinem zweiten Post... hab keine Lust, alles nochmal zu schreiben.

PS: Klassenvariablen sind was anderes, nämlich statisch.

PPS:
Um zur ursprünglichen Frage zurückzukommen:
Gerade wenn es um viele Variablen geht, würd ich den Teufel tun und da 1000 identische Getter hinschreiben. Der Code riecht nicht mehr, der verwest schon.
Das müsste man abstrahieren, z.B. durch ein Container-Objekt, welches diese Arbeit macht... oder schnell und dreckig durch __get(), was hier glaube ich angemessen wäre.

Geändert von Waq (13.07.2006 um 12:04 Uhr)
Waq ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Aus anonymen inneren Klassen auf Klassenvariable der "Oberklasse" zugreifen Ben Allgemeine Java-Programmierung 4 06.03.2006 16:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45