php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.08.2004, 11:22  
Neuer Benutzer
 
Registriert seit: 08.08.2004
Beiträge: 10
UniQ
Standard Klasse ändern

Mal angenommen ich hab 2 Klassen A und B. Die Klasse B ist von der Klasse A abgeleitet.

Nun möchte ich, dass die Klasse A anhand ihrer Parameter entscheidet ob sie zur Klasse B wird.
Oder anders gesagt ich möchte nicht jedes Mal explizit prüfen müssen welche Klasse ich nun verwenden muss.

Kann ich die Klasse einfach durch folgende Anweisung ändern?
Code:
$this = new KlasseB($param1,...);
Oder gibt es da elegantere Lösungen?
UniQ ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.08.2004, 12:37  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 529
DutziMan befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php

class class_A
{

}

?>
PHP-Code:
<?php

class class_B extends class_A
{

}

?>
PHP-Code:
<?php

if ( $A_isWanted )
{
  
$obj =& new class_A;
}

if ( 
$B_isWanted )
{
  
$obj =& new class_B;
}

?>
Das ist da die einzige Möglichkeit
DutziMan ist offline  
Alt 24.08.2004, 00:12  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.597
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Klasse ändern

Zitat:
Zitat von UniQ
Nun möchte ich, dass die Klasse A anhand ihrer Parameter entscheidet ob sie zur Klasse B wird.
klasse A ist und bleibt klasse A. genauso verhält es sich mit klasse B.

Zitat:
Zitat von UniQ
Oder anders gesagt ich möchte nicht jedes Mal explizit prüfen müssen welche Klasse ich nun verwenden muss.
dann nehm klasse B, da ja sowieso auf die methoden etc. der klasse A zugegriffen werden kann.

Zitat:
Zitat von UniQ
Kann ich die Klasse einfach durch folgende Anweisung ändern?
eventuell solltest du dir mal den unterschied zwischen klasse und objekt bzw. instanz einer klasse verdeutlichen.


ich persönlich für bei dutzis beispiel noch ein
PHP-Code:
$obj null
voransetzen.

java verlangt das
imported_Ben ist offline  
Alt 24.08.2004, 14:19  
Neuer Benutzer
 
Registriert seit: 08.08.2004
Beiträge: 10
UniQ
Standard

Naja hast schon recht, ich meinte Objekte

Aber bei meinen "Problem" bin ich immernoch nicht weiter
Ich hol am besten mal richtig aus.

Es geht um eine Vereins-Klasse, die Daten zum Verein aus einer Datenbank lädt.
Jetzt haben sich aber ein paar Leute zusammengesetzt und beschlossen das es auch Spielgemeinschaften gibt.
Also hab ich mir gedacht, mach ich doch dafür eine Spielgemeinschaft-Klasse , die von der Vereinsklasse abgeleitet ist.

Code:
<?php

class Verein
{

    function Verein ($vereinsnummer)
    {
    }

}

?>
Code:
<?php

class Spielgemeinschaft extends Verein
{

    function Spielgemeinschaft ($vereinsnummer)
    {
    }

}

?>
Ob das Objekt nun ein einfacher Verein ist oder eine Spielgemeinschaft hängt von der Vereinsnummer ab.

Da ich nicht immer, wenn ich ein Vereins-Objekt erzeuge, explizit prüfen will ob das nun eine Spielgemeinschaft ist, wollte ich das irgendwie automatisch machen.

Deshalb wollte ich halt einfach ein Vereins-Objekt erstellen, das bei Bedarf zu einen Spielgemeinschaft-Objekt mutiert.

Wenn ich immer die Spielberichtsklasse nehme funktioniert das auch nicht, weil Methoden der Vereinsklasse überschrieben werden!

Deshalb sehe ich jetzt 2 Möglichkeiten:
  • Ich erweitere die Vereinsklasse um eine statische Methode, die mir automatisch das richtige Objekt zurückliefert.
    Code:
    function getClub()
    {
        ...
        return $club;
    }
    
    find ich nicht so toll in der Handhabung, aber sicher am einfachsten

  • Ich prüfen bei allen Methoden, die die Spielgemeischaft-Klasse überschreiben würde, ob es sich um eine Spielgemeinschaft handelt und führe dann den entsprechenden Code aus.
    Code:
    function criticalMethod()
    {
        if (isSpielgemeinschaft()) {
            [Spielgemeinschaft-Code]
        } else {
            [Verein_Code]
        }
    }
    
    etwas unübersichtlicher Code

Hat jemand andere Vorschläge, oder eine Meinung welche Variante besser ist

Danke schonmal!
UniQ ist offline  
Alt 24.08.2004, 14:30  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.597
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du überprüfst, ob die vereinsnummer zu einer spielgemeinschaft gehört und erstellst dann entwder ein objekt der klasse verein oder der klasse spielgemeinschaft.

PHP-Code:
$Obj null;

if ( 
getInfoAboutClub() )
     
$Obj = new Verein();
else
     
$Obj = new Spielgemeinschaft(); 
in der funktion getInfoAboutClub() überprüfst du eben, ob es eine SG ist oder nicht.
imported_Ben ist offline  
Alt 24.08.2004, 14:46  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Zitat:
Zitat von UniQ
s richtige Objekt zurückliefert.
Code:
function getClub()
{
    ...
    return $club;
}
find ich nicht so toll in der Handhabung, aber sicher am einfachsten
Schreib Factory dran und Du hast das bevorzugte Design Pattern für solche Fälle.
__________________
mod = master of disaster
Waq 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 aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
HTML Klasse ecomeback PHP Tipps 2008 6 31.08.2007 22:32
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
Eine Klasse mehrere Dateien sn00py PHP Tipps 2006 6 08.05.2006 11:40
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
aus einer funktion auf funktion anderer klasse zugreifen seejay PHP Tipps 2006 3 05.01.2006 10:37
Klasenname einer nicht instanziierten Klasse DerDesian PHP Tipps 2007 9 30.11.2005 13:13
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23: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
Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
[Erledigt] Instanz bilden innerhalb einer Klasse PHP Tipps 2004 7 11.12.2004 12:58
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
Klassenobjet in anderer Klasse benutzen inu PHP Tipps 2004 6 19.09.2004 10:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
klasse ändern php

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