Oop: Zugriff auf Methoden anderer Klassen?

SuReBuRn

Mitglied
Ich zeige erstmal die Dateien und den Code, dann komm ich auf mein Problemchen:

PHP:
require_once("./lib/_config.php");
require_once(CLASS_DIR."shoutbox.class.php");

Nix besonderes... in der Config stehene ein paar Definitionen. shoutbox.class.php:
PHP:
// init acp
require_once(LIB_DIR."ACP.class.php");

// init shoutbox
// require_once(LIB_DIR."modules/".$area.".class.php");

// create classes
$shoutbox = new shoutbox();

Hier werden die Dateien zur klasse ACP und shoutbox includiert.
ACP.class.php:
PHP:
// imports
if (!defined('NO_IMPORTS')) {
	require_once(LIB_DIR."database/MySQLDatabase.class.php");
	require_once(LIB_DIR."system/functions.class.php");
	
	require_once(LIB_DIR."modules/".$area.".class.php");
}

class ACP {

	public function __construct() {
	// initialization
		$this->initDB();
		$this->initMsg();
		$this->initFunc();
		$this->initSessions();
		$this->initCookies();
		$this->initTpl();
	}
	
	

	public function __call($name, $args) {
		echo "You called for ".$name.", which does not exist. \n";
		exit;
	}
	
	

	public function initDB() {
		require_once(LIB_DIR."db.inc.php");
		$this->$db = new db($sqlhost, $sqluser, $sqlpassword, $sqldb, $phpversion);
	}
// blablabla usw.


Hier noch schnell die DB-Klasse aus der MySQLDatabase.class.php:
PHP:
class db {
	protected $link_id	= 0;
	protected $query_id	= 0;
	protected $record	= array();
	protected $errdesc	= '';
	protected $errno	= 0;
	protected $show_error	= 1;
	
	protected $server;
	protected $user;
	protected $password;
	protected $database;
	
	protected $use_unbuffered_query = false;
	
	public function __construct($server, $user, &$password, $database, $phpversion) {
		$this->server = $server;
		$this->user = $user;
		$this->password = $password;
		$this->database = $database;
		
		$password = '';
		
		$this->connect();
		
		$this->password = '';
	}    
	

	public function connect() {
		$this->link_id = @mysql_connect($this->server, $this->user, $this->password);
		if (!$this->link_id) $this->error("Link-ID == false, connect failed");
		if ($this->database != '') $this->select_db($this->database);
	}
	

	public function select_db($database = '') {
		if ($database != '') $this->database = $database;
		if (!@mysql_select_db($this->database, $this->link_id)) $this->error("cannot use database ".$this->database);
	}


	public function query($query_string, $limit = 0, $offset = 0, $showerror = 1) {
		if ($limit != 0) $query_string .= " LIMIT $offset, $limit";
		$this->query_id = mysql_query($query_string, $this->link_id);
		if ($showerror == 1 && !$this->query_id) $this->error("Invalid SQL: ".$query_string);
		return $this->query_id;
	}

in der shoutbox.class.php (nicht die selbe von oben):
PHP:
class shoutbox extends ACP {

	public function __construct() {
		$this->makeSomething();
	}
	
	public function makeSomething() {
	
	// zugriff auf die methoden aus der klasse ACP?
	}
}

In der letzten Klasse (shoutbox) soll die gesamte Shoutbox gemanagt werden. Dafür brauche ich aber Zugriff auf die DB-Klasse (auch noch auf ein paar andere, aber das erledigt sich dann ja eh von selbst, hoffe ich :D).
Momentan verstehe ich einige Zusammenhänge noch nicht und mache zum Teil auch noch blöde Fehler... Hoffe ihr könnt mir da ein wenig helfen.
 
Zuletzt bearbeitet:
Such mal nach registry Patterns....kann ich sehr empfehlen.

Du lädst einfach Hauptklassen in der inde.php in die registry klasse und kannst dann in den constructor der anderen Klasse diese wieder laden.... :)

MFG Niels
 
Such mal nach registry Patterns....kann ich sehr empfehlen.

Du lädst einfach Hauptklassen in der inde.php in die registry klasse und kannst dann in den constructor der anderen Klasse diese wieder laden.... :)

MFG Niels
Du immer mit deinem Registry-Pattern. ;)

Um eine Methode einer anderen Klasse aufzurufen musst du das so machen:
PHP:
AndereKlasse::AndereMethode();

greetz
daddz
 
Ich hab mich immer gefragt was das eigentlich sein soll mit dem :: . Wusste nur nie nach was ich suchen soll :-)
 
Zurück