Home arrow PHP arrow Page 3 - Object Interaction in PHP: Introduction to Aggregation, part 2

Adding Some Functionality to the Class - PHP

In this second part of his series, Alejandro Gervasio gets a little more technical with the basics of Aggregation. He begins working with a MySQL abstraction class and a useful paging class, and is starting to get into writing portable code and introducing the technique of aggregation.

TABLE OF CONTENTS:
  1. Object Interaction in PHP: Introduction to Aggregation, part 2
  2. Fetching data with class: the “MySQLConnector” class
  3. Adding Some Functionality to the Class
  4. Improving the “MySQLConnector class: adding row-counting methods
  5. Implementing the “MySQLConnector” class: a practical example
By: Alejandro Gervasio
Rating: starstarstarstarstar / 14
June 01, 2005

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

Now, let’s add some functionality to the class, writing some code for the constructor, to set up the incoming parameters. So, the complete code for this method look like this:

function MySQLConnector($host,$user,$password,$database){
    // validate incoming parameters
    (!empty($host))?$this->host=$host:die('Host parameter not valid');
    (!empty($user))?$this->user=$user:die('User parameter not valid');
    (!empty($password))?$this->password=$password:die('Password parameter not valid');
   
(!empty($database))?$this->database=$database:die('Database parameter not valid');
    // connect to MySQL and select database
    $this->connectDB();
}

Up to this point, the constructor has become really very functional; it validates each parameter passed to it, assigning them as class data members. Also, notice that within it, we’re calling the private method “connectDB()”, which complements the job of the constructor. Thus, let’s go one step forth, and define it:

// connect to MYSQL server and select database
function connectDB(){
    $this->conId=@mysql_connect($this->host,$this->user,$this->password) or die('Error connecting to the server '.mysql_error());
    @mysql_select_db($this->database,$this->conId) or die('Error selecting database');
}

Although this isn’t a difficult method, it does let us connect to MySQL, and select the corresponding database. Now the internal call to this method from the constructor becomes clear. See how we’re encapsulating the native PHP function inside each method? I hope you do!

Okay, there are still two methods to be defined to get the class completed. Thus, join me below for their definitions. In first place, the “performQuery() method:

// perform query
function performQuery($query){
    $this->result=@mysql_query($query,$this->conId) or die('Error performing query '.$query);
}

And secondly, the “fetchRow()” method:

// fetch row
function fetchRow(){
    return mysql_fetch_array($this->result,MYSQL_ASSOC);
}

These are my favorites, take my word for it, because they’re simple yet powerful. The first method accepts the SQL query, performs it against the selected database and ends up building a result set.

Following the explanation, the second method fetches a row at time from the result set obtained, returning the data in an associative array, where the keys correspond to the name of the fields (notice the usage of the MYSQL_ASSOC argument). Simple, huh?

Well, I think that our job for defining class methods is already done. So, let’s put the pieces together and assemble the MySQLConnector class. Here’s the full class code:

class MySQLConnector {
    var $conId; // connection identifier
    var $host; // MySQL host
    var $user; // MySQL username
    var $password; // MySQL password
    var $database; // MySQL database
    var $result; // result set
    // constructor
    function MySQLConnector($host,$user,$password,$database){
        // validate incoming parameters
        (!empty($host))?$this->host=$host:die('Host parameter not valid');
        (!empty($user))?$this->user=$user:die('User parameter not valid');
        (!empty($password))?$this->password=$password:die('Password parameter not valid');
        (!empty($database))?$this->database=$database:die('Database parameter not valid');
        // connect to MySQL and select database
        $this->connectDB();
    }
    // connect to MYSQL server and select database
    function connectDB(){
        $this->conId=@mysql_connect($this->host,$this->user,$this->password) or die('Error connecting to the server '.mysql_error());
        @mysql_select_db($this->database,$this->conId) or die('Error selecting database');
    }
    // perform query
    function performQuery($query){
        $this->result=@mysql_query($query,$this->conId) or die('Error performing query '.$query);
    }
    // fetch row
    function fetchRow(){
        return mysql_fetch_array($this->result,MYSQL_ASSOC);
    }
}

So far, the class is ready to be put doing its thing, at least in simple applications. But, I’m feeling like it lacks of some frequent features, often required in such a class. What about adding a few more methods to count the total numbers or records retrieved, the number of records affected by an INSERT, UPDATE or DELETE statement, or the ID of a row just inserted? Surely, that would be a big improvement. It’s just a matter of keeping reading to find out more.



 
 
>>> More PHP Articles          >>> More By Alejandro Gervasio
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

PHP ARTICLES

- Hackers Compromise PHP Sites to Launch Attac...
- Red Hat, Zend Form OpenShift PaaS Alliance
- PHP IDE News
- BCD, Zend Extend PHP Partnership
- PHP FAQ Highlight
- PHP Creator Didn't Set Out to Create a Langu...
- PHP Trends Revealed in Zend Study
- PHP: Best Methods for Running Scheduled Jobs
- PHP Array Functions: array_change_key_case
- PHP array_combine Function
- PHP array_chunk Function
- PHP Closures as View Helpers: Lazy-Loading F...
- Using PHP Closures as View Helpers
- PHP File and Operating System Program Execut...
- PHP: Effects of Wrapping Code in Class Const...

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: