Hej alle sammen.
Jeg står med et ret stort problem, som jeg nu gennem lang tid har prøvet at finde en løsning på, uden held. Derfor håber jeg på at en eller flere herinde kan hjælpe mig lidt på vej mod en løsning.
Lad os starte med et lille kode eksempel:
- <?php
- ///////////////////////////////////
- // Generelle classes som kan //
- // bruges på flere projekter //
- ///////////////////////////////////
-
- class Database
- {
- var $connection;
-
- function __construct($host, $user, $pass, $database)
- {
- $this->connection = mysql_connect($host, $user, $pass);
- mysql_select_db($database, $this->connection);
- }
-
- function DeleteById($table, $id)
- {
- mysql_query("DELETE FROM " . $table . " WHERE id = '".$id."'", $this->connection);
- }
- }
-
- class Blog
- {
- function ShowAllPosts()
- {
- //Samme problem, som beskrevet neden under. Hvordan får jeg lov til at bruge den mysql connection som er defineret i "MyWebSite_Com"?
- $query = mysql_query("SELECT * FROM blog_posts ORDER BY date", $this->database->connection);
- while($info = mysql_fetch_assoc($query))
- echo $info['title'] . '<br />';
- }
-
- function DeletePostById($id)
- {
- //Dette vil ikke virke, da "database" connectionen ikke er en del af "Blog" classen.
- //Spørgsmålet er så, hvordan får jeg det til at virke, når nu både "Database" og "Blog" classes er defineret i "MyWebSite_Com"?
- $this->database->DeleteById("blog_posts", $id);
- }
- }
-
- ///////////////////////////////////
- // Den aktuelle hjemmeside's //
- // indhold og funktioner //
- ///////////////////////////////////
-
- class MyWebSite_Com
- {
- var $database;
- var $blog;
-
- function __construct()
- {
- $this->database = new Database("localhost", "user", "****", "database");
- $this->blog = new Blog;
- }
- }
-
- $cms = new MyWebSite_Com;
- $cms->blog->ShowAllPosts();
- ?>
Som I kan se, så ønsker jeg at lave en masse overordnet classes som jeg kan bruge på mange forskellige projekter.
Disse classes "hentes" så i en ny class som er lavet specielt til det projekt som jeg arbejder med. Denne class indeholder de classes som hjemmesiden skal kunne benytte.
Mit problem opstår så, at mine overordnet classes ikke helt forstår at de er en del af en stor class ("MyWebSite_Com"), og derfor kan jeg ikke bruge de forskellige funktioner på kryds og på tværs.
Jeg ved ikke om min ide, er den mest optimale måde at benytte class idéen på, så har du et bedre forslag, så sig endelig frem
Indlæg senest redigeret d. 14.01.2009 17:54 af Bruger #8254