protected function load($tableName) { $file = $this->cachedName($tableName); if (false !== $file) { if (!is_file($file) or !$this->debug) { $table = $this->driver->describeTable($tableName); $this->writeCacheFile($file, serialize($table)); } $table = unserialize(file_get_contents($file)); } else { $table = $this->driver->describeTable($tableName); } return $table; }
protected function update(Table $table, $object, $pk) { $event = new UpdateEvent($object, array(), array()); $this->dispatcher->dispatch(Events::PRE_UPDATE, $event); if ($event->isStopped()) { return; } $values = ModelUtil::getValues($table, $object); $where = "{$table->primaryKey} = ?"; $originals = $this->find(get_class($object), $pk, PDO::FETCH_ASSOC); foreach ($originals as $column => $value) { if (array_key_exists($column, $values) and $value === $values[$column]) { unset($values[$column]); } } if (count($values)) { $event = new UpdateEvent($object, $values, $originals); $this->dispatcher->dispatch(Events::UPDATE, $event); if ($event->isStopped()) { return; } $this->driver->update($table->name, $values, $where, array($pk)); $this->dispatcher->dispatch(Events::POST_UPDATE, $event); } }