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 :-)
