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!"