Come accedere efficientemente alle funzioni nelle classi estese?

0

In PHP ho classi come sotto

class Animal {
    //some vars
    public function printname(){ 
        echo $this->name;
    }
}

class AnimalMySql extends Animal {
    static public function getTableFields(){ 
        return array();
    }
}

class AnimalPostgreSql extends Animal {
    static public function getTableFields(){ 
        return array();
    }
}

Ora ho un oggetto $lion = new Animal(); e voglio fare

if($store == mysql)
    //getTableFields from class AnimalMySql
else
    //getTableFields form class AnimalPostgreSql

Sono nuovo di OOP e non sono sicuro di quale sia il modo migliore per chiamare il metodo dalla classe specifica Post scriptum Si prega di lasciare una nota con la risposta per spiegare l'efficienza dell'approccio

    
posta nischayn22 16.06.2012 - 07:20
fonte

1 risposta

1

Per chiamare la funzione corretta in base all'archivio dati del tipo, apparirà come segue:

if($store == mysql)
{
  $lion = new AnimalMySql(); //extends the Animal class
  $array = $lion ->getTableFields();
  //Alternatively - $array = $lion::getTableFields();

}
else
{
  $lion = new AnimalPostgreSql(); //extends the Animal class
  $array = $lion ->getTableFields();
  //Alternatively - $array = $lion::getTableFields();


}

Per renderlo più efficiente, metti il metodo getTableFields nella classe Animal, vedendo che la sua funzione è esattamente la stessa per entrambe le sottoclassi. Quando definisci una sottoclasse da estendere alla classe Animale, il metodo verrà esposto immediatamente. questo è un metodo standard per chiamare le classi in PHP. Cercare di scrivere meno righe di codice è sempre una buona idea per mantenere il codice gestibile e più efficiente.

    
risposta data 16.06.2012 - 08:12
fonte

Leggi altre domande sui tag