Hoi,
Ik ben een beginner met OOP en heb de volgende code:
<?php
class InvalidLoginException extends Exception { };
class InvalidNewsMessageException extends Exception { };
class UserSessionController
{
protected $db;
function __construct(PDO $db)
{
$this->db = $db;
}
private function checkUsername($user)
{
if(strlen($user) < 3)
throw new InvalidLoginException('Gebruikersnaam te kort.');
return true;
}
private function checkPassword($pass)
{
if(strlen($pass) < 6)
throw new InvalidLoginException('Wachtwoord te kort.');
return true;
}
private function checkCombination($user,$pass)
{
$query = "SELECT geb_id, gebruikersnaam FROM gebruiker WHERE gebruikersnaam = :user AND wachtwoord = :pass";
$stmt = $this->db->prepare($query);
$stmt->bindParam(':user', $user);
$stmt->bindParam(':pass', md5($pass));
$stmt->execute();
if($stmt->rowCount() != 1)
throw new InvalidLoginException('Combinatie gebruiker/wachtwoord onbekend');
return $this->fetch($stmt);
}
protected function fetch(PDOStatement $stmt)
{
$data = $stmt->fetch(PDO::FETCH_ASSOC);
return $data;
}
protected function fetchAll(PDOStatement $stmt)
{
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $data;
}
public function login($username,$password)
{
$this->checkUsername($username);
$this->checkPassword($password);
if($this->checkCombination($username,$password))
{
$user = $this->checkCombination($username,$password);
if($user)
{
$_SESSION['USER']['ID'] = $user['geb_id'];
$_SESSION['USER']['NAME'] = $user['gebruikersnaam'];
$_SESSION['LOGGEDIN'] = true;
}
}
return true;
}
}
class NewsController
{
protected $db;
function __construct(PDO $db)
{
$this->db = $db;
}
public function getNews()
{
$query = "SELECT n.nie_id, n.titel, n.datum FROM nieuws n ORDER BY n.datum ASC";
$stmt = $this->db->prepare($query);
$stmt->execute();
return $this->fetchAll($stmt);
}
public function getHomePageNews()
{
$query = "SELECT n.nie_id, n.titel, DATE_FORMAT(n.datum, '%d-%m-%Y') as datum FROM nieuws n ORDER BY n.datum ASC LIMIT 0,10";
$stmt = $this->db->prepare($query);
$stmt->execute();
return $this->fetchAll($stmt);
}
public function getNewsById($id)
{
$query = "SELECT n.nie_id, nc.ncat_id, n.titel, n.bericht, n.datum, nc.naam FROM nieuws n INNER JOIN nieuws_categorie nc ON (nc.ncat_id = n.ncat_id) WHERE n.nie_id = :id";
$stmt = $this->db->prepare($query);
$stmt->bindParam(':id', $id);
$stmt->execute();
if($stmt->rowCount() != 1)
throw new InvalidNewsMessageException ('Nieuwsbericht niet gevonden');
return $this->fetch($stmt);
}
protected function fetch(PDOStatement $stmt)
{
$data = $stmt->fetch(PDO::FETCH_ASSOC);
return $data;
}
protected function fetchAll(PDOStatement $stmt)
{
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $data;
}
}
class OutbreakController
{
protected $db;
function __construct(PDO $db)
{
$this->db = $db;
}
public function getOutbreak()
{
$query = "SELECT n.nie_id, n.titel, n.datum FROM nieuws n ORDER BY n.datum ASC";
$stmt = $this->db->prepare($query);
$stmt->execute();
return $this->fetchAll($stmt);
}
protected function fetch(PDOStatement $stmt)
{
$data = $stmt->fetch(PDO::FETCH_ASSOC);
return $data;
}
protected function fetchAll(PDOStatement $stmt)
{
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $data;
}
}
/* General Functions */
function safeUrl($string, $koppelteken = '-') {
$string = strtolower($string);
$string = strip_tags($string);
$string = preg_replace("#\&([a-z]{1})([a-z]{1,})\;#", "\\1", htmlentities($string)); // zet alle rare tekens om naar gewone tekens (het idee dankzij Webmakerij)
$string = str_replace(" ", $koppelteken, $string); // zet spaties om in het koppelteken
$string = preg_replace("#[^\w".preg_quote($koppelteken, "#")."]#", "", $string); // haal alle tekens zoals quotes, komma's en punten uit de string, behalve het koppelteken
$string = trim($string, $koppelteken); // haal de koppeltekens aan de uiteinden van de string weg
return $string; // geef m maar terug :)
}
?>
Is dit een goed begin qua OOP?
995 views