PHP Frage zum Aufbau einer Klasse

baserider

Well-known member
ID: 174417
L
10 März 2007
682
23
Hi,

in meiner Klasse soll es Funktionen für verschiedene Kriterien geben:

PHP:
function machWasBeiKriterium1()
function machWasBeiKriterium2()
function machWasBeiKriterium3()

Ist es beser die Funktionen direkt aufzurufen
PHP:
$obj->machWasKriterium1();
$obj->machWasKriterium2();
usw...

oder ist es jetzt besser eine zusätzliche Funktion zu schreiben, die das regelt,also
PHP:
function controller($type){
    switch($type){
        case 'foo':
            return $this->machWasBeiKriterium1();
        break;
        // usw....
    }
}

// Aufruf:
$obj->controller('kriterium1');
 
für solch eine abstrakte Frage kann dir niemand eine Antwort geben ;)
Sag worum es wirklich gibt und wir können dir helfen.
 
Es geht um 3 Produktarten und je nachdem was ich haben will sieht die Datenbankabfrage anders aus, da ja jede Produktart ihre spezifischen Eigenschaften hat, die ich dann aus der jeweiligen Tabelle auslesen will
 
Würde also bedeuten ich muss mir für jede Produktart ne eigene Klasse anlegen.

Achso was ich vorhin vergessen hatte, es soll für nen Webservice werden, wo einfach je nach Produktart Daten abgefragt werden können. Am Ende soll nur ein Array rauskommen, was dann weiterverarbeitet werden kann.
 
Auf jeden Fall für jede Produktart eine Klasse.
Denn wenn du das mit einer switch-Anweisung o.ä. machst, musst du immer in dieser Methode was ändern, sobald es eine neue Produktart gibt usw usf.
Wenn du das über Klassen regelst, überprüfst du ob es eine Klasse ProduktArten_Art1 (oder wie auch immer du das nennst) gibt, falls ja, ob diese auch das Interface ProduktArten_Interface implementiert (nennt man das auch bei einem Interface so?) und falls ja, einfach die Klasse erstellen und eine Hook Methode aufrufen.. also so in der Richtung (natürlich kein Denglisch benutzen :p):

PHP:
$kriterium = "Art1";
$className = "ProduktArten_" . $kriterium;
$properties = null;

if(class_exists($className)) {
  $class = new $className;
  
  if($class instanceof ProduktArten_Interface)
    $properties = $class->getProperties();
}
 
Hi,

ok, das werde ich mir mal ansehen.
Im Prinzip wär das meine Variante, das man versch. Funktionen benutzt, nur das es dann versch. Objekte sind.

@chrissl in der Methode getProperties würde ich also dann das Array zurückgeben was dann nach Aufruf des Webservices weiterverarbeitet werden kann?