Avatar billede razmuz_dk Nybegynder
10. oktober 2006 - 11:52 Der er 1 kommentar

Anvende sql-objekt i andet objekt

Hej eksperter,

Jeg har længe funderet over én ting. Hvad er den bedste måde at få sit sql-objekt ind i andre objekter på? Fx kunne man i "users-objektet" godt få brug for en sql-forbindelse for fx at søge efter brugerens navn.

I nedenstående vil jeg opridse de måder jeg umiddelbart har kunne finde på. $sql er i nedenstående et objekt instantieret fra klassen SQL.

------------------------------------------------------
class users {
  public function __construct($user_id, SQL $sql) { }
  // $sql indsættes via constructor'en
}
------------------------------------------------------
class users {
  public function __construct($user_id) { }
  public function setupSql(SQL $sql) {
    $this->sql = $sql;
  }
  // $sql indsættes via speciel funktion
}
------------------------------------------------------
class users {
  public function getName() {
    global $sql; // her henter jeg $sql fra global scope
  }
}
------------------------------------------------------
class users {
  public function getName() {
    sql::query();
    // sql-klassen kaldes via scope resolution operatoren
    // dette er ikke så hensigtsmæssige, da man ikke kan tale
    // om brug af et decideret objekt :-/
  }
}
------------------------------------------------------
class users extends sql {
  public function getName() {
    $this->query();
  }
  // objektet users arver sql-klassens funktioner
}
------------------------------------------------------

Kender du til andre smartere metoder, der enten kræver mindre kode eller er mere overskuelig?

Dette "spørgsmål" må gerne opfattes som en diskussion om forskellige snarere end et spørgsmål.

På forhånd tak for jeres forhåbenligt oplysende kommentarer/svar :-)
Avatar billede razmuz_dk Nybegynder
10. oktober 2006 - 13:57 #1
... jeg fandt lige på en anden mulig måde:

public function __construct() {
  global $sql; // trækker sql ind fra global scope
  $this->sql = $sql; // en reference til den offentlige $sql-instance er gemt i objektet til senere brug
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester