On the otherhand, the way I do it is like so, below 
PHP Code:
# login.packages.php
class UserRoles {
function UserRoles() {
} # constructor not implemented
function Load( &$resultset, $archiver ) {
$indexer = array();
$iterator = &new QueryIterator( &$resultset );
while( $iterator -> IsValid() ) {
$row = $iterator -> GetCurrent();
$iterator -> GetNext();
$archive = &new $archiver;
$archive -> Invoke( $row );
$indexer[] = &$archive;
}
return $indexer;
}
function Insert() {
}
function Update() {
}
function Delete() {
}
}
class UserRolesGateway {
function UserRolesGateway() {
} # constructor not implemented
function InsertUsers2Roles( &$db, $role_id, $user_id ) {
$users2Roles = "INSERT INTO tbl_users2roles SET
fld_role_id = '".$role_id."',
fld_user_id = '".$user_id."'";
return $db -> Execute( $users2Roles );
}
function FindAll( &$db ) {
$findAll = "SELECT
fld_id AS id,
fld_role_name AS name FROM
tbl_roles ORDER BY fld_id";
return $db -> Execute( $findAll );
}
function FindByUserId( &$db, $id ) {
$findByUserId = "SELECT
fld_user_id AS user_id,
fld_role_id AS role_id,
fld_id AS id,
fld_role_name AS name FROM
tbl_users2roles,
tbl_roles WHERE
fld_user_id = '".$id."' AND fld_role_id = fld_id ORDER BY fld_role_id";
return $db -> Execute( $findByUserId );
}
}
class RolesArchiver {
var $Id;
var $Name;
function RolesArchiver() {
}
function Invoke( $row ) {
$this -> Id = $row['id'];
$this -> Name = $row['name'];
}
}
class UserPermissions {
function UserPermissions() {
} # constructor not implemented
function Load( &$resultset, $archiver ) {
$indexer = array();
$iterator = &new QueryIterator( &$resultset );
while( $iterator -> IsValid() ) {
$row = $iterator -> GetCurrent();
$iterator -> GetNext();
$archive = &new $archiver;
$archive -> Invoke( $row );
$indexer[] = &$archive;
}
return $indexer;
}
function Insert() {
}
function Update() {
}
function Delete() {
}
}
class UserPermissionsGateway {
function UserPermissionsGateway() {
} # constructor not implemented
function FindByRoleId( &$db, $id ) {
$findByRoleId = "SELECT
fld_perm_id AS perm_id,
fld_role_id AS role_id,
fld_id AS id,
fld_perm_name AS name FROM
tbl_roles2perms,
tbl_permissions WHERE
fld_perm_id = fld_id AND
fld_role_id = '".$id."' ORDER BY fld_perm_id";
return $db -> Execute( $findByRoleId );
}
}
class PermissionsArchiver {
var $Id;
var $Name;
function PermissionsArchiver() {
}
function Invoke( $row ) {
$this -> Id = $row['id'];
$this -> Name = $row['name'];
}
}
class LogIn {
function LogIn() {
} # constructor not implemented
function Load( &$resultset, $archiver ) {
$indexer = array();
$iterator = &new QueryIterator( &$resultset );
while( $iterator -> IsValid() ) {
$row = $iterator -> GetCurrent();
$iterator -> GetNext();
$archive = &new $archiver;
$archive -> Invoke( $row );
$indexer[] = &$archive;
}
return $indexer;
}
function Insert() {
}
function Update() {
}
function Delete() {
}
}
class LogInGateway {
function LogInGateway() {
} # constructor not implemented
function FindByLogIn( &$db, $username, $password ) {
$findByLogIn = "SELECT
fld_id,
UNIX_TIMESTAMP( fld_date ) AS fld_date,
fld_state,
fld_fname,
fld_lname,
fld_email,
fld_session,
fld_username,
fld_password FROM tbl_login WHERE
fld_username = '".$username."' AND
fld_password = PASSWORD('".$password."')";
return $db -> Execute( $findByLogIn );
}
}
class LogInArchiver {
var $Id;
var $Date;
var $State;
var $FName;
var $LName;
var $EMail;
var $Session;
var $Username;
var $Password;
function LogInArchiver() {
} # constructor not implemented
function Invoke( $row ) {
$this -> Id = (int) $row['fld_id'];
$this -> Date = (string) $row['fld_date'];
$this -> State = (string) $row['fld_state'];
$this -> FName = (string) $row['fld_fname'];
$this -> LName = (string) $row['fld_lname'];
$this -> EMail = (string) $row['fld_email'];
$this -> Session = (string) $row['fld_session'];
$this -> Username = (string) $row['fld_username'];
$this -> Password = (string) $row['fld_password'];
}
}
PHP Code:
# ie
$db = singleton::getInstance();
$login = LogIn::Load( LogInGateway::FindByLogIn( &$db, $username, $password ), 'LogInArchiver' );
Bookmarks