Hallo

Kan iemand mij zeggen wat ik fout heb gedaan in de volgende code?

define('HOSTNAAM', $_CONFIG['hostnaam']);
define('GEBRUIKERSNAAM', $_CONFIG['gebruikersnaam']);
define('WACHTWOORD', $_CONFIG['wachtwoord']);
define('DATABASE', $_CONFIG['database']);

$database = new Database(HOSTNAAM, GEBRUIKERSNAAM, WACHTWOORD, DATABASE);
$database->connect();
$database->connect($mysqli);

Hierboven pakt hij de variable $mysqli niet terwijl die variable toch duidelijk is aangegeven hieronder na de connect() function...


class Database extends mysqli {
	protected $hostnaam = HOSTNAAM;
	protected $gebruikersnaam = GEBRUIKERSNAAM;
	protected $wachtwoord = WACHTWOORD;
	protected $database = DATABASE;
    
	public function connect() {    
	    $mysqli = @new mysqli($this->hostnaam, $this->gebruikersnaam, $this->wachtwoord, $this->database);
	    if (mysqli_connect_errno()) {
		   printf('Error');
	   }
	    return true;
    	}
	
	function query($query) { 
        	$result = parent::query($query);
		if($this->error) {
			throw new Exception(mysqli_error($this), mysqli_errno($this));
		}
		return $result;
	} 
}


alle hulp is welkom
- Ariën - op 05/01/2017 15:52:45


 class User extends Database 

Dus volgens jou is een User een database?
Begrijp je eigenlijk wel wat extend precies doet, en waarvoor je het moet gebruiken?
Het is niet een soort 'include' van een willekeurige class ofzo.

REQUIRE_ONCE $_SERVER["DOCUMENT_ROOT"] . '/core/classes/database_class.php';

class User extends Database {
}

Dit zijn gewoon moeten werken ^^ Ik heb zelfs nog gekeken bij een paar bestanden die ik mijn pc had (die waren van iemand anders) en daar werkte het
Rob, het lijkt er niet op dat jij iets van mij of Ariën wilt aannemen.

Het heeft verder dan ook geen zin om verder te discussiëren. Dan kun je het beter zelf gewoon allemaal op je eigen houtje uitzoeken en op je eigen manier doen. Succes.
- Rob - op 05/01/2017 16:04:19


class User extends Database {
}

Dit zijn gewoon moeten werken ^^ Ik heb zelfs nog gekeken bij een paar bestanden die ik mijn pc had (die waren van iemand anders) en daar werkte het

Dat het werkt wil niet zeggen dat het klopt. Op een snelweg waar je de enige bent zo vroeg in de morgen mag je ook niet 180 km/h rijden.
OO-design is erg leuk, mits je de theorie erachter wilt snappen. Anders kan je net zo goed geen OO-design gebruiken.

Oké! hartstikke bedankt. Ik denk dat ik OO-design nog even achterwege laat en eerst verder expirimenteer
Het connectie-object (van klasse mysqli) heb je ook niet nodig buiten de database-klasse, deze is onderdeel van een database-object. Het lijkt mij niet verstandig om dit mysqli-object buiten de klasse beschikbaar te stellen omdat men dan mogelijk dat object rechtstreeks gaat gebruiken, en dat zou het doel van een Database-klasse (die extra functionaliteit en gebruikersgemak toevoegt?) teniet doen...

Het maken van een connectie met een database is iets wat je toch altijd doet (lijkt mij?) dus dit zou je ook in de constructor (__construct()) kunnen opnemen. Dit scheelt je weer een methode-aanroep (connect() kan dan weg).

Reageren