Ik ben bezig een beetje OOP te leren, en ben begonnen met een volgend script:
<?
class Connection {
protected $link, $server, $username, $password, $db;
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
Ok das al iets, ik denk dat mijn logisch nadenken nog even aan moet worden gezet, logisch dat die $_SERVER al een IP geeft :P
IPv6 is toch irritant (die crasth thuis mijn internetverbinding :P dus lekker uitgezet) maar kun je die niet ook gewoon ophalen met $_SERVER?
en ik heb nu:
private $ip = $_SERVER['REMOTE_ADDR']
Als de bezoeker een IPv6 adres heeft zou de de $_SERVER['REMOTE_ADDR'] key het IPv6 adres moeten bevatten.
Edit: voor een connectie kun je denk ik beter PDO pakken. Het heeft weinig nut om het wiel opnieuw uit te vinden + het is een goede oefening om met objecten te werken.
mysqli is ook geen nieuw wiel? Sterker nog ik vind het redelijk handig :) http://nl2.php.net/mysqli
mysql improved, alles gelezen op deze site :P
Klopt, mysqli is ook goed, ik doelde er meer op waarom een nieuwe database klasse schrijven als die er al is, nl PDO. Deze is overigens geschikt voor een hoop andere databases. Dus dat is erg handig.
De naam getIP impliceert dat je een ip-adres terugkrijgt als antwoord, niet dat hij een ip-adres 'set'. Dan zou ik hem eerder setIP noemen ;) Waarom sla je hem trouwens op in $this? Wordt hij ergens anders dan nog gebruikt door het object? Zo nee, dan zou ik hem niet opslaan.
Ik zou voor je PDO een global, of iets van vergelijkbare functionaliteit (registery-klasse, singleton? nee, die niet) gebruiken zodat je hem makkelijk kan aanspreken.
nee klopt, ik moet ook nog commentaren toevoegen, en de namen wat veranderen ;) setip is inderdaad beter. En ik sla hem op in this omdat ik hem terugvraag als ik kijk of een bezoeker al vaker is geweest en een nieuwe rij invoeg? Of kan ik soms ook gewoon doen:
return $_SERVER[REMOTE_ADDR]
en dan in een query setip() gebruiken?
Om het gemakkelijk voor jezelf te maken:
setIP wijst het IP-adres (of een argument dat je de functie geeft?) toe aan $this->ip, en geeft een true/false terug of het is gelukt.
getIP geeft de waarde van $this->ip terug, en als die niet bekend is pakt hij de waarde uit $_SERVER. Deze geeft hij dan als string terug.
Zo kan je dus nooit setIP in je query gebruiken (wat logischer is) want aan die boolean waarde heb je niets. getIP heeft nu weer wat nuttige functionaliteit.