PHPBuilder - The Benefits of Using Objects with Databases Page 2



RSS Twitter
Articles Application Architecture

The Benefits of Using Objects with Databases - Page 2

by: Sam Barnum
|
May 9, 2003


<?php
class User {
    var 
$_data = array(); // associative array containing all the attributes for the User

    
function username() {
        return !empty(
$this->_data['username']) ? $this->_data['username'] : '(no name!)';
    }

    function 
setUsername($newUsername) {
        if (
$this->validateUsername($newUsername)) {
            
$this->_data['username'] = $newUsername;
        }
    }

    function 
validateUsername(&$someName) {
        if (
strlen($someName) > 12) {
            throw new 
Exception('Your username is too long'); // PHP5 only
        
}
        return 
true;
    }
}
?>
Obviously, this gives tremendous control over how to access the properties of an object. If a programmer had accessed the username property directly, the changes above would have broken her code. By using the accessor methods, however, the code referencing our User class gets the additional validation functionality without changing anything.
Note that the username validation code is in a separate method from the setUsername() method. This will come in handy when validating the object before saving to the database. Also, it's a good rule of thumb that the less a method or class needs to do, the more reusable it will be. This is even more apparent when you start subclassing, and want to override a specific part of a class's parent behavior. If the methods are small and specific, this is a snap. If the methods are bloated and multipurpose, you will probably end up duplicating a lot of the super class code in your subclasses.
For instance, suppose Admin is a subclass of User. There may be a different, less lenient method for validating passwords for admin users. Better to only override the validation method then the entire setUsername() method.

« Previous Page
1
|
2
|
3
|
4
|
5
Next Page »

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Sam Barnum

Comment:



Comment:

(Maximum characters: 1200). You have characters left.