/** * Cache the model_rwd instance, optionally using the $field * * @param model_rwd $instance with class model_rwd to cache * @param mixed $field to use as key to instance * @since ADD MVC 0.0 */ protected static function cache_instance(model_rwd $instance, $field = NULL) { $class = get_called_class(); $table = static::TABLE; if (!$field) { $field = static::cache_main_key(); $field_value = $instance->cache_main_id(); } else { $field_value = $instance->{$field}; } e_developer::assert(!isset(static::$instances[$class][$table][$field][$field_value]), "Attempt to cache {$class} row ({$table}:{$field}:{$field_value}) twice", NULL, array(static::$instances, get_defined_vars())); static::$instances[$class][$table][$field][$field_value] = $instance; return static::$instances[$class][$table][$field][$field_value]; }