使用Request Object介绍request对象在每次脚本执行时创建,如,SGL_FrontController::run()被调用时。你可以通过下列代码取得request对象的参考: $req = SGL_Request::singleton(); 或,如果registry实例$input在引作用域,你也可以这样取得: $input->getRequest(); request对象收集了应用程序所需的数据。它对数据执行了最低限度的过滤并检查其完整性。 在managers中,validate()函数允许开发人员建立自己的逻辑来决定哪些数据是有效的。被认为是有效的数据将被拷贝到$input对象。 request对象是由$_REQUEST值组成的,它将被提交给预处理:
查看[http://trac.seagullproject.org/browser/trunk/lib/SGL/Request.php|trunk/lib/SGL/Request.php]]以获得所有可用的方法信息。 Best Practices你永远不会用到末经处理的$_REQUEST数组,经过上面所说的加工处理,你可以通过下列代码来取得你想要的值: $input->myVar = $req->get('myVar'); 如果你不想自动去除HTML: $input->aDataItemValue = $req->get('frmFieldName', $allowTags = true); 所有收集到的数据 URI 解析由于request对象使用单键模式,所以在每次脚本调用时它只被创建一次。在创建初始化时,它从请求URI中提取数据。Seagull允许开发人员选择大量URI的解析策略,结果被组成到请求数据。简单的说,URI数据会被提取,同样标准的查询信息也会被提取,而且相关的URI别名也会被处理。更多信息看UriManagement URI解析完后,下列键值将被添加到request对象: [frontScriptName] => index.php [moduleName] => currentModule [managerName] => currentManagerClass frontScriptName变量用来保存是作为入口,或者是前端控制器的文件名。开发者可以任意命名这个文件或不使用它而使用mod_rewrite并将'frontScriptName'设成false。 URI 缓存解析URI是很上用资源的,由于URI映射被缓存,所以在缓存期间,任何一个URI不会被重复解析。 Cool URIs don't changeInteresting W3C material worth reading on the subject of [http://www.w3.org/Provider/Style/URI good URL construction]. |