Home arrow PHP arrow Page 5 - Working with MySQL and Sessions to Serialize Objects in PHP

The complete list of classes for the example - PHP

If you're interested in learning how to combine objects, sessions and MySQL, this is the article that you’ve been waiting for. It's the final part of the series “Serializing objects in PHP.” In three parts, this series goes through the fundamentals of serializing objects in PHP applications, and explores some advanced topics with regard to this subject, including the use of the magic “__sleep()” and “__wakeup()” functions, and the manipulation of serialized objects inside of MySQL tables.

TABLE OF CONTENTS:
  1. Working with MySQL and Sessions to Serialize Objects in PHP
  2. The basics of automated object serialization: using objects and sessions
  3. Combining objects and sessions: defining a session handling class
  4. Another implementation of object serialization: saving objects to MySQL tables
  5. The complete list of classes for the example
By: Alejandro Gervasio
Rating: starstarstarstarstar / 16
June 20, 2006

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

Finally, for the sake of completeness, below I listed all the classes that I used for constructing the previous example:

// define 'User' class
class User{
    var $name;
    var $address;
    var $email;
    function User($userData=array()){
        if(!is_array($userData)){
            trigger_error('User data must be an
array!',E_USER_ERROR);
        }
        foreach($userData as $property=>$value){
            if($property==''||$value==''){
                trigger_error('Invalid values for user
data!',E_USER_ERROR);
            }
            $this->{$property}=$value;
        }
    }
    // obtain user name
    function getName(){
        return $this->name;
    }
    // obtain user address
    function getAddress(){
        return $this->address;
    }
    // obtain user email
    function getEmail(){
        return $this->email;
    }
}
// define 'ObjectSerializer' class
class ObjectSerializer{
    function ObjectSerializer(){}
    function getSerializedObj($obj){
        if(!is_object($obj)){
            trigger_error($obj.'input parameter must be an
object!',E_USER_ERROR);
        }
        return serialize($obj);
    }
    function getUnserializedObj($data){
        if(!is_string($data)){
            trigger_error($data. 'must be a
string!',E_USER_ERROR);
        }
        return unserialize($data);
    }
}
// define 'MySQL' class
class MySQL {
    var $conId; // connection identifier
    var $host; // MySQL host
    var $user; // MySQL username
    var $password; // MySQL password
    var $database; // MySQL database
    // constructor
    function MySQL($options=array()){
        // validate incoming parameters
        if(count($options)>0){
            foreach($options as $parameter=>$value){
                if(empty($value)){
                    trigger_error('Invalid parameter
'.$parameter,E_USER_ERROR);
                }
                $this->{$parameter}=$value;
            }
            // connect to MySQL
            $this->connectDB();
        }
        else {
            trigger_error('No connection parameters were
provided',E_USER_ERROR);
        }
    }
    // connect to MYSQL server and select database
    function connectDB(){
        if(!$this->conId=mysql_connect($this->host,$this-
>user,$this->password)){
            trigger_error('Error connecting to the
server',E_USER_ERROR);
        }
        if(!mysql_select_db($this->database,$this->conId)){
            trigger_error('Error selecting
database',E_USER_ERROR);
        }
    }
    // perform query
    function query($query){
        if(!$this->result=mysql_query($query,$this->conId)){
            trigger_error('Error performing query
'.$query,E_USER_ERROR);
        }
        // return new Result object
        return new Result($this,$this->result); 
    }
}
// define 'Result' class
class Result {
    var $mysql; // instance of MySQL object
    var $result; // result set
    function Result(&$mysql,$result){
        $this->mysql=&$mysql;
        $this->result=$result;
    }
    // fetch row
    function fetchRow(){
        return mysql_fetch_array($this->result,MYSQL_ASSOC);
    }
    // count rows
    function countRows(){
        if(!$rows=mysql_num_rows($this->result)){
            return false;
        }
        return $rows;
    }
    // count affected rows
    function countAffectedRows(){
        if(!$rows=mysql_affected_rows($this->mysql->conId)){
            trigger_error('Error counting affected
rows',E_USER_ERROR);
        }
        return $rows;
    }
    // get ID from last inserted row
    function getInsertID(){
        if(!$id=mysql_insert_id($this->mysql->conId)){
            trigger_error('Error getting ID',E_USER_ERROR);
        }
        return $id;
    }
    // seek row
    function seekRow($row=0){
        if(!mysql_data_seek($this->result,$row)){
            trigger_error('Error seeking data',E_USER_ERROR);
        }
    }
    function getQueryResource(){
        return $this->result;
    }
}

To wrap up

We’re done now. Over this series, I covered not only the fundamentals of object serialization in PHP, but also some advanced topics, such as the implementation of the magic “__sleep()” and “__wakeup()” functions, and the usage of objects in sessions. Finally, I completed the series by demonstrating how to store serialized objects in MySQL tables, which makes me believe that you have enough code to keep you experimenting for many hours. As usual, see you in the next PHP tutorial!



 
 
>>> 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: