<?php
class userController extends Controller
{
public function __construct ()
{
parent::__construct();
}
public function addUser ()
{
$user = new User (); // instantiated using __autoload.
$user -> set ( 'firstName', 'Berry' );
$user -> set ( 'lastName', 'Langerak' );
$user -> save ();
}
public function listUsers ()
{
$users = UserMapper::Get ( array ( 'firstName' => '= Berry' ) );
$view = new HTMLView ( 'userList' );
$view -> appendModels ( 'users', $users );
return $view;
}
}
class userMapper implements iMapper
{
public function __construct ();
{
parent::__construct ();
}
public function Get ( $criteria )
{
/**
* De onderliggende mapper gaat dan vervolgens
* kijken welke velden er in de database zitten,
* en retourneerd de records die voldoen aan de
* criteria.
**/
return parent::Get ( 'users', $criteria );
}
/**
* Ten opzichte van..
**/
public function Get ( $criteria )
{
$query = "SELECT firstName, lastName FROM users";
/**
* Geen zin om dit uit te schrijven, daarom zo. In
* dit voorbeeld zou het nog werken ook.
**/
foreach ( $criteria AS $field => $criterium )
{
$where = ( !isset ( $where ) ) ? ' WHERE ' : '';
$where .= $field . ' ' . $criterium . ' ';
}
$res = mysql_query ( $query );
while ( $current = mysql_fetch_assoc ( $res ) )
{
$users[] = array ( $current['firstName'], $current['lastName'] );
}
return $users;
}
public function set ( $varName, $value )
{
if ( isset ( $this -> $varName ) )
{
$this -> $varName = mysql_real_escape_string ( $value );
}
}
public function save ()
{
/**
* De save van de parent (model) detecteerd middels
* Reflection de velden die hij op moet slaan.
**/
$this -> userId = parent::save ();
}
public function save ()
{
/**
* Is dit dan zoals jij het zou doen?
**/
$query = "INSERT INTO users ( firstName, lastName ) VALUES ( %s, %s );";
if ( !mysql_query ( sprintf ( $query, $this -> firstName, $this -> lastName ) ) )
{
throw new databaseException ();
}
else
{
$this -> userId = mysql_insert_id ();
}
}
}
?>