Jeg har nedenstående klasse, og jeg vil gerne kalde min funktion "getByID()", og i denne funktion skal den tjekke om der er oprettet en database-forbindelse, og hvis der er, så skal den hente noget data fra en tabel udfra det givne id, hvis ikke der er oprettet en database-forbindelse, så skal den returnere false.
<?php class Account extends Model { public function getByID( $id ) { return true; } } ?>
Jeg har ingen DB klasse. Hvilke metoder skal der være i sådan en? Det kan ikke lade sig gøre at bruge metoden __construct(), desværre. Derfor har jeg et problem :/
Nej, hvordan min "model" (klassen Account) skal se ud, hvis den skal henten noget data ud fra en database - hvilket den jo ikke kan gøre hvis ikke der er oprettet forbindelse. Og forbindelsen skal oprettes i klassen!
Hvis jeg kunne bruge __construct, så ville jeg blot lave det således:
class Account { public function __construct() { $this->db = new PDO( ... ); }
public function getByID($id) { $this->db->query( .. ); } }
Men det kan jo desværre ikke lade sig gøre, så jeg søger et alternativ. Jeg er ikke interesseret i at oprette forbindelse til databasen, hvis ikke det er nødvendigt at hente noget fra den, så forbindelsen skal altså oprettes i getByID()
Hvis du ikke kan bruge __construct grundet at du kører php4, så kan du lave en funktion med samme navn som din klasse. Sådan en funktion virker på samme måde som __construct.
class Account extends Model { public function Account() { $this->db = new PDO( ... ); }
public function getByID($id) { $this->db->query( .. ); } }
Hvis det skyldes at den klasse som din model bygger på allerede har en __construct kan du gøre noget ala: class Account { public function __construct() { parent::__construct(); $this->db = new PDO( ... ); }
public function getByID($id) { $this->db->query( .. ); } }
dkfire: det er noget alá det jge ønsker, jeg synes bare ikke så godt om det med at kalde klassen sådan. så kan jeg ikke bare undgå __construct, men alligevel bruge noget af princippet i dit eksempel?
Nu ved jeg jo ikke lige hvad du har planer om at bruge, så det kan jeg ikke svare på. Jeg kan dog heller ikke forstå hvorfor du ikke vil have en __construct ??
Jeg vil bare køre funktionerne således: "$data = Account::getByID(2);"
Synes godt om
Ny brugerNybegynder
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.