Something like this should get you started <?php
// NOT TESTED !!! class SimpleMapper { private $metadata = array(); private $stmt; public function __construct(PDOStatement $stmt, array $metadata) { $this->stmt = $stmt; $this->metadata = $metadata; } public function map() { $databaseData = $this->stmt->fetchObject(); $r = new \ReflectionClass($this->metadata['class']); $obj = $r->newInstanceWithoutConstructor(); foreach ($this->metadata['c2p'] as $col => $property) { $val = $databaseData->$col; $type = $property['type'] ?: 'string'; settype($val, $type); $prop = $r->getProperty($property['name']); $prop->setAccessible(true); $prop->setValue($val); } return $obj; } } // usage class Item { public $id; public $name; public $description; } $mapper = new SimpleMapper($stmt, array( // the class where we want to map the database data 'class' => 'Item', // database column to object property mapping metadata 'c2p' => array( 'ItemID' => array('name' => 'id', 'type' => 'int'), 'ItemName' => array('name' => 'name', 'type' => 'string'), 'ItemDescription' => array('name' => 'description', 'type' => 'string') ) )); $item = $mapper->map(); On Thu, Jun 11, 2015 at 9:26 AM, Octopus Puras <zlk1...@gmail.com> wrote: > I have a MySQL table, whose name is Items: > ItemID ItemName ItemDescription > > I also have a PHP class: > class Item { > public $id; > public $name; > public $description; > } > > If I execute $stmt->fetchObject(), I will get an object with fields of > ItemID, ItemName, etc. But I want to adapt the name of the fields to the > Item class. What should I do? >