Hallo allemaal,

Ik ben bezig een beetje OOP te leren, en ben begonnen met een volgend script:
<?
class Connection {
protected $link, $server, $username, $password, $db;

public function setupconnection($server, $username, $password, $db)
{
$this->server = $server;
$this->username = $username;
$this->password = $password;
$this->db = $db;
$this->connect();
}

protected function connect()
{
$this->link = mysql_connect($this->server, $this->username, $this->password);
mysql_select_db($this->db, $this->link);
}
}
$connect = new Connection();
$connect->setupconnection('server', 'username', 'wachtwoord', 'database');
?>
Maar mijn vraag: Wat is hier nou "beter" aan dan gewoon even te typen:
mysql_connect(bla);
mysql_select_db(bla,bla);
???
Ik vind het er trouwens wel stoer uit zien :P
why stomme firefox? :)
maar dan kun je net zo goed setip weglaten en gewoon gelijk getip gebruiken?
Het heeft geen nut om die functie te maken. $_SERVER is een array die zich in de global scope bevindt. Dit wil zeggen dat de alle waarden daar uit overal beschikbaar zijn. Als je hier nog een functie van maakt die het IP aan een variable toewijst doe je dus hetzelfde als:

$naam = $_POST['naam']

Dit is nergens voor nodig.
Uhu, nog een schakeltje logisch nadenken omgezet :) Danku. Maar ik zou toch graag willen weten hoe ik mysqli (en geen PDO) kan gebruiken binnen functies zonder telkense opnieuw te verbinden, kan net een beetje mysqli taal verstaan na jaren van mysql gewoon :P en dan opeens PDO (wat volgens mij meer voor de grote jongens is die grote projecten doen :P)
reinder schreef op 19.04.2008 14:13
Uhu, nog een schakeltje logisch nadenken omgezet :) Danku. Maar ik zou toch graag willen weten hoe ik mysqli (en geen PDO) kan gebruiken binnen functies zonder telkense opnieuw te verbinden, kan net een beetje mysqli taal verstaan na jaren van mysql gewoon :P en dan opeens PDO (wat volgens mij meer voor de grote jongens is die grote projecten doen :P)


Je kunt de connectie gebruiken door een een global variabel van te maken.

<?ph
global $conn = mysqli_connect(...);

function blaat()
{
$q = "SELECT...";
mysqli_query($q, $conn)
}
?>
hmm ook op de OOP manier mogelijk volgens mij niet want die probeerde ik net:
Buiten de class zette ik dit:
<?
global $mysqli = new mysqli(....);
?>
reinder schreef op 19.04.2008 14:18
hmm ook op de OOP manier mogelijk volgens mij niet want die probeerde ik net:
Buiten de class zette ik dit:
<?
global $mysqli = new mysqli(....);
?>


nee je moet het object niet global maken maar enkel de connectie. Die zet je dus buiten je klasse en vervolgens als je hem nodig hebt om een query uit te voeren kun je die connectie gewoon in je methoden aanroepen.
ok dus ik moet in een functie niet doen: mysqli->query maar mysqli_query? Verplicht?
Ik zou geen klasse maken van mysqli, maar mysqli in een klasse gebruiken door buiten de klasse een connectie aan te maken en te koppelen aan een global variabel en deze gebruiken binnen je klasse.
Lijkt mij inderdaad ook verkeerd.

Zelf geef ik bij het maken van objecten (dus aan de constructor) de instantie van MySQLi mee die er gebruikt moet worden.

<?php
class Gastenboek {
protected
$storage;

public function __construct(MySQLi $storage)
{
$this->storage = $storage;
}

public function getPosts()
{
$result = $this->storage->query('SELECT * ...');

// doe wat om ze te fetchen in Post-objecten en ze in een arrya te zetten

return $posts;
}
}

$mysql = new MySQLi(...);
$gastenboek = new Gastenboek($mysql);
var_dump($gastenboek->getPosts());
?>
Jelmer bedankt! :) Zo bedoelde ik het :P

Reageren