March 19, 2000

Intro to collections

Okay, so how do collections work? Here's an example:

my $user = $R->user->fetch( $uid );
print "Username: ", $user->username, "\n";
$user->set( 'first_name', 'Ding' );
$user->set( 'last_name', 'Dong' );
my $rv = $user->save();
if ( ! $rv ) {
  $R->error->add( 513, "Cannot add user record!" );
# Find all the user objects where the user's last name
# begins with w
my $user_list = $R->user->fetch_group( where => "last_name like 'w%'" );
foreach my $user ( @{ $user_list } ) {
  print "Username: ", $user->username, "\n";
  print "Full Name: ", $user->full_name, "\n";

And so on. These are obviously really simplistic examples. But the idea is there. The variable $R is an object that acts as a container for other objects that live throughout the life of an http request -- much like the variable commonly called $r that is the first argument to any mod_perl handler.

Generally, there's a DBI database handle ($R->db), a server-wide configuration object ($R->config), the apache server rec object in perl ($R->apache), and a CGI object ($R->cgi). I've subclassed the base $R object to provide class aliasing as well. This way, I can call: $R->user which simply returns a class name (e.g., Intes::User) that can then be used to call an actual class method (e.g., $R->user->fetch( $uid ) becomes Intes::User->fetch( $uid )).

I'll try to get some basic stuff up on my website soon, depending on what Rusty winds up saying... :)

(Originally posted elsewhere)

Next: Old photos
Previous: Erin Brockovich, audience reactions and previews