发表日期: 2021-04-26 09:24:17 浏览次数:100
如皋网站制作【如皋网站优化】如皋建网站、如皋微信公众号运营、如皋网页设计、如皋微信小程序商城
如皋市,简称“如”或“皋”,江苏省辖县级市,由南通市代管,江苏省历史文化名城。地处长江三角洲北翼,位于南通、泰州、苏州三市交界处,南与张家港市隔江相望,北与海安市、东与如东县连接、东南与南通市通州区毗邻,西与泰兴市、西南与靖江市接壤。全市总面积1477平方公里(不含长江水面),长江水面99平方千米。如皋长江岸线全长48千米,可直接利用长江深水岸线18.6千米。
如皋市被国际自然医学会评为世界六大长寿乡之一。 [1] 如皋市户籍人口约142万。截至2021年1月1日,全市80周岁以上高龄老人68031人,90周岁以上高龄老人10150人,百岁老人达525位,其中105岁以上达16位。 [2]
2019年6月17日,如皋被中华人民共和国住房和城乡建设部选取作为开展规范城市户外广告设施管理工作试点城市。 [3] 2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国绿色发展百强县市、2019年度全国新型城镇化质量百强县市、2019全国营商环境百强县。 [4-6] 2020年12月,社科院发布《全国县域经济综合竞争力100强》,如皋排名第31 [7] 。
如何扩展其他数据源?
其他数据源是除了上面的主数据源和备用数据源以外的数据源。当需要使用其他途径的数据源时,可进行扩展支持。
若需要扩展项目自定义的映射关系,则可以重写PhalApi_Request::getDataBySource($source)方法,如:
// $ vim ./Shop/Common/Request/Stream.php<?phpclass My_Request_Stream extends PhalApi_Request {
protected function &getDataBySource($source) {
if (strtoupper($source) == 'stream') {
// TODO 处理二进制流
}
return parent::getDataBySource($source);
}}复制代码然后,便可在项目中这样配置使用二进制流的数据源。
// 从二进制流中获取密码'password' => array('name' => 'password', 'source' => 'stream'),复制代码当PhalApi提供的参数类型不能满足项目接口参数的规则验证时,除了使用callable回调类型外,还可以扩展PhalApi_Request_Formatter接口来定制项目需要的参数类型。
和前面的定制类似,主要分两步:
第1步、扩展实现PhalApi_Request_Formatter接口
第2步、在DI注册新的参数类型
下面以大家所熟悉的邮件类型为例,说明扩展的步骤。
首先,我们需要一个实现了邮件类型验证的功能类:
// vim ./Shop/Common/Request/Email.php<?phpclass Common_Request_Email implements PhalApi_Request_Formatter {
public function parse($value, $rule) {
if (!preg_match('/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/', $value)) {
throw new PhalApi_Exception_BadRequest('邮箱地址格式错误');
}
return $value;
}}复制代码然后,在项目入口文件进行注册。注册时,服务名称格式为:_formatter + 参数类型名称(首字母大写,其他字母小写),即:
// $ vim ./Public/shop/index.phpDI()->_formatterEmail = 'Common_Request_Email';复制代码
若不想手动注册,希望可以自动注册,扩展的类名格式须为:PhalApiRequest_Formatter{类型名称}。
最后,就可以像其他类型那样使用自己定制的参数类型了。新的参数类型为email,即:'type' => 'email',。
array('name' => 'user_email', 'type' => 'email')复制代码此外,PhalApi框架已自动注册的格式化服务有:
表2-8 内置参数类型格式化服务
参数类型 | DI服务名称 | 说明 |
|---|---|---|
string | _formatterString | 字符串格式化服务 |
int | _formatterInt | 整数格式化服务 |
float | _formatterFloat | 浮点数格式化服务 |
boolean | _formatterBoolean | 布尔值格式化服务 |
date | _formatterDate | 日期格式化服务 |
array | _formatterArray | 数组格式化服务 |
enum | _formatterEnum | 枚举格式化服务 |
file | _formatterFile | 上传文件格式化服务 |
callable | _formatterCallable | 回调格式化服务 |
callback | _formatterCallback | 回调格式化服务 |
在实现扩展新的参数类型时,不应覆盖已有的格式化服务。
