Skip to main content

An example PHP class with dynamic methods based on database records (or arrays).

<?php

//
// The Sample MySQL Record in a PHP Array
//
// Pretend we created the array below based on a record retrieved via a
// MySQL query.
//

record = array(
        'id' => 12,
        'title' => 'Greatest Hits',
        'description' => 'The greatest hits from the best band in the world!'
    );


//
// The PHP Class with Dynamic Functions
//

class Record
{
    /* record information will be held in here */
    private $info;

    /* constructor */
    public function Record($record_array)
    {
        $this->info = $record_array;
    }

    /* dynamic function server */
    public function __call($method,$arguments)
    {
        $meth = $this->from_camel_case(substr($method,3,strlen($method)-3));
        return array_key_exists($meth,$this->info) ? $this->info[$meth] : false;
    }

    /* uncamelcaser: via http://www.paulferrett.com/2009/php-camel-case-functions/ */
    public function from_camel_case($str)
    {
        $str[0] = strtolower($str[0]);
        $func = create_function('$c', 'return "_" . strtolower($c[1]);');
        return preg_replace_callback('/([A-Z])/', $func, $str);
    }
}


//
// The PHP Example Usage
//
$Record = new Record(
    array(
        'id' => 12,
        'title' => 'Greatest Hits',
        'description' => 'The greatest hits from the best band in the world!'
    )
);

/* proof it works! */
echo 'The ID is:  '.$Record->getId(); // returns 12
echo 'The Title is:  '.$Record->getTitle(); // returns "Greatest Hits"
echo 'The Description is:  '.$Record->getDescription(); //returns "The greatest hits from the best band in the world!"