Funktion einer nicht instanzierten Klasse aufrufen

Wenn das geht, dürfte dass ab PHP Version 5 mit dem Auflösungoperator ( :: ) gehen.

KLASSENNAME::FUNKTIONSNAME

Bin mir da aber nicht sicher.

Eine andere Möglichkeit wäre, in der Klasse die andere Klasse zu initialisieren, oder der einen Klasse eine Instanz auf die andere zu übergeben.
PHP:
class test
{
   function test()
   {
      test1::machwas('bla');
   }
}


PHP:
class test
{
   function test()
   {
      $class1 = new test1;
   }
}

PHP:
class test
{
   var $class;
   function test(&$class)
   {
       $this->class = $class;
   }
}

$class1 = new test1();
$class2 = new test($class1);

Bin mir nicht sicher, welches funktioniert, oder ob überhaupt eines klappt.
 
PHP:
<?php
  protected var;
class abc {
function xyz {
  $var = new example;
  $var->lala($zyx);
}
}

class example {
function lala($zyx) {
  echo "Hallo!";
}
}
Ist eigentlich recht simpel...

Auflösungsoperator geht glaube ich nur, wenn Klasse2 eine Erweiterung von Klasse1 ist... Bin mir aber auch net wirklich sicher...
 
Ok danke jetzt noch eine kleine frage nebenbei wegen MySQL
ich sende einen fehlerhaften query mit dem inhalt "blabla" aber mysql_error() meldet nichts und mysql_errno() sagt 0
 
Wie sieht das denn bei dir aus?
PHP:
<?php
mysql_connect("localhost","usert","pass");
mysql_select_db("test");

$sql = mysql_query("BLABLA");

if($sql) { echo "ok!"; } else { echo mysql_error(); }

mysql_close(); 
?>

Meldet bei mir eindeutig:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BLABLA' at line 1
 
ich habe was versucht die funktionen laufen nr in meiner klasse nicht warum ka.
PHP:
<?php
class system_database
{
	var $conn = false; //Verbindungskennung.
	var $class_debug = false;
	var $db_mode; //Datenbankmodus.
	var $db_server; //Server.
	var $db_user; //Username.
	var $db_password; //Passwort.
	var $db_name; //Name der Datenbank.
	
	
	function system_database($class_debug){
		$this->class_debug = $class_debug;
	}
	
	/* Übergibt einer Variabel einen Wert.
	   $var   = Variabel.
	   $value = Wert.
	*/
	function set_var($var, $value)
	{
		$this->$var = $value;
	}
	
	function connect(){
		if($this->db_mode == "mysql"){
			if($this->conn = mysql_connect($this->db_server, $this->db_user, $this->db_password)){
				if(mysql_select_db($this->db_name, $this->conn)){
					$this->class_debug->log("Verbindung zum Server: ".$this->db_server." wurde hergestellt. Datenbank: ".$this->db_name." wurde ausgewählt.", "db_info");
					return true;
				}else{
					$this->class_debug->error("Datenbank: ".$this->db_name." wurde nicht gefunden.", "", "", true, array("text", mysql_error()), "db_error");
				}
			}else{
				$this->class_debug->error("Konnte keine Verbindung zum Server: ".$this->db_server." aufbauen.", "", "", true, array("text", mysql_error()), "db_error");
			}
		}else{
			$this->class_debug->error($this->db_mode. "ist ein ungültiger Datenbankmodus.", "", "", true, "", "db_error");			
		}
		return false;
	}
	
	function query($query, $file=false, $line=false, $halt=false){
		if($this->db_mode == "mysql"){
			if($db_query = @mysql_query($query, $this->conn)){
				$this->class_debug->log("Sende MySQL-Query: ".$query, "db_info", $file, $line);
				return $db_query;
			}else{
				$this->class_debug->error("Fehler im MySQL-Query: ".$query, $file, $line, $halt, array("text", mysql_error($this->conn)), "db_error");
			}
		}else{
			$this->class_debug->error($this->db_mode. "ist ein ungültiger Datenbankmodus.", $file, $line, $halt, "", "db_error");			
		}
		return false;
	}
}
?>
 
Zurück