static in php?

RalfHeinz

Erfahrenes Mitglied
Hallo ich beschäftige mich seit kurzem erst mit oop in php und schon tauchen auch die ersten Probleme auf. Hier zunächst der Code

PHP:
class db	{

	private static $database;
	
	private static $server;
	private static $dbname;
	private static $user;
	private static $pw;
	private static $table;
	
	public static function connect($server, $user, $pw, $dbname)	{
	
		$database	=	new MySQLi;
		$database->connect($server, $user, $pw, $dbname);
		var_dump($database);
		echo 'Verbunden an ' . $server. ' zu DB: ' . $dbname . ' mit User:' .$user . ' <br/>';
		
	}
	
	public static function setUUID()	{
		
		$sql = 'INSERT INTO testtab (uuid) VALUES (UUID())';
		var_dump($database);
		$database->query($sql);
	
	}

}

die rufe ich in einer anderen Datei auf mit

PHP:
include ('db.php');

db::connect('localhost', '***', '***', 'test');
db::setUUID();

ich erzeuge damit folgende Fehlermeldung...

Code:
Fatal error: Call to a member function query() on a non-object in H:\xampp\htdocs\test\db.php on line 26

also zeile:
$database->query($sql);

var_dump gibt mir in der function connect das mysqli-objekt aus... in der function setUUID leider NULL. Eigentlich sollte die Variable ja static sein.
Wo liegt mein Denkfehler?
 
Hallo,

der Aufruf von statischen Methoden oder Objekten innerhalb der Klasse geschieht mit dem "self::".
In deinem Beispiel also:

PHP:
self::$database->query($sql);

OB das "$" dann auch mit muss kann ich dir nicht sagen, habe grad kein PHP da ;)

Gruß
BK
 
thx schonmal für die Hilfe aber ganz funktioniert das so auch nicht.

PHP:
var_dump(self::database);
gibt "Fatal error: Undefined class constant 'database' in H:\xampp\htdocs\test\db.php on line 25"

und
PHP:
var_dump(self::$database);
gibt "NULL" aus

Am Rest hab ich erstmal nix geändert? hab ich vielleicht noch nen fehler drin?
 
mi $.
PHP:
    public static function connect($server, $user, $pw, $dbname)    {
    
        self::$database    =    new MySQLi;
        self::$database->connect($server, $user, $pw, $dbname);
        echo 'Verbunden an ' . $server. ' zu DB: ' . $dbname . ' mit User:' .$user . ' <br/>';
        
    }
    
    public static function setUUID()    {
        
        $sql = 'INSERT INTO testtab (uuid) VALUES (UUID())';
        self::$database->query($sql);
    
    }
 
Zurück