public static function extract_param(array $parammap, array $spec) { $paramname = $spec['name']; $required = $spec['required']; $default = null; # = $spec['default']; $param = null; # $has_default = array_key_exists('default', $spec); if ($has_default) { $default = $spec['default']; } $has_param = array_key_exists($paramname, $parammap); if ($has_param) { $param = $parammap[$paramname]; } if ($required && !$has_param) { Dispatch::Exception('Parameters_Required', 'required parameter ' . $paramname . ' was not found'); } if (!$has_param && $has_default) { return $default; } if (!$has_param && !$has_default) { return null; } return $param; }
public function action($request) { $action = $this->action; if (!isset($this->action)) { Dispatch::Exception('Dispatch', 'Cannot get action for ' . get_class($this) . ', no action specified in advance, did you remember to call ->execute( $action ) ?'); } $action->set_param('rule_class', array('value' => get_class($this))); $action->set_param('request', array('value' => $request)); $action->set_param('dispatcher', array('value' => &$this->dispatcher)); $action->set_param('rule', array('value' => $this)); return $action; }