
| MVC控制器;MVC视图;JSON操作;动态加载类与文件;对象注册表;配置数据;命令设置与参数;过滤器;校验器;调试与异常处理;处理URL;数据缓存;画会话处理;访问控制列表;访问认证适配器;邮件处理;Log处理;Zend版本;文本搜索引擎;数据库操作;PDF文件操作;RSS与FEED;服务组件;HTTPE务;XML-RPC;RESTE务;Zend-Service-Amazon;Zend-Service-Flickr;ZendServiceYahoo;Google服务;本地化;多语言;日期时间;度量处理;MVC新闻管理系统。 读者对象:PHP程序员;画PH PWeb开发人员;PHP网站管理与维护人员;Zend Framework爱好者;大中专院校的学生;各类PHP培训人员。 内容全面:对ZendFramework的各个组件都做了详尽介绍,画示例丰富:书中穿插了320余个示例进行讲解,容易理解,实用性强:通过一个综合案例的实现,提高读者应用水平,视频教学:结合多媒体教学视频讲解,学习起来直观、高效。 10.5小时多媒体视频讲解。 |
| 第一篇 Zend Framework 简介 第1章 Zend Framework简介 2 1.1 什么是Zend Framework 2 1.2 Zend Framework的特点 3 1.3 Zend Framework的应用案例 3 1.4 Zend Framework的组成部分 4 1.5 小结 6 第2章 安装调试环境 7 2.1 AMP的安装 7 2.1.1 安装Apache 7 2.1.2 测试Apache 9 2.1.3 安装PHP 10 2.1.4 测试PHP 11 2.1.5 安装MySQL 11 2.2 Zend Framework的安装 14 2.2.1 安装Zend Framework 15 2.2.2 测试Zend Framework 15 2.3 小结 16 第二篇 MVC组件 第3章 MVC控制器 18 3.1 Zend_Controller入门 18 3.1.1 目录结构 18 3.1.2 创建入口程序 19 3.1.3 创建默认的控制器 20 3.1.4 创建视图文件 21 3.2 Zend_Controller基础 23 3.3 前端控制器 25 3.3.1 常用方法 25 3.3.2 环境访问器方法 28 3.3.3 前端控制器参数 29 3.3.4 继承前端控制器 30 3.4 请求对象 31 3.4.1 访问请求对象 31 3.4.2 访问HTTP请求数据 31 3.4.3 访问HTTP请求基地址与子目录 32 3.4.4 子类化请求对象 33 3.5 路由器的使用 35 3.5.1 路由器的工作环境 35 3.5.2 使用路由器 36 3.5.3 基本的路由操作 37 3.5.4 4种基本路由 38 3.6 分发器 41 3.6.1 分发概述 41 3.6.2 子类化分发器 42 3.7 动作控制器 45 3.7.1 动作控制器简介 45 3.7.2 对象初始化 46 3.7.3 访问器 46 3.7.4 视图集成方法 47 3.7.5 其他实用方法 49 3.8 动作助手 49 3.8.1 初始化动作助手 49 3.8.2 助手经纪人 50 3.8.3 内建的动作助手 51 3.9 响应对象 57 3.9.1 使用方法 57 3.9.2 处理消息头 58 3.9.3 命名片段 59 3.10 小结 59 第4章 MVC视图 60 4.1 Zend_View简介 60 4.1.1 创建控制器脚本 60 4.1.2 创建视图脚本 61 4.2 控制器脚本 62 4.2.1 为变量赋值 63 4.2.2 调用视图并输出 64 4.2.3 视图脚本的路径 64 4.3 视图脚本 65 4.3.1 变量调用形式 65 4.3.2 转义输出 66 4.3.3 在视图中使用模板 66 4.4 视图助手 73 4.4.1 基本助手 73 4.4.2 视图助手的路径 75 4.4.3 编写自定义助手类 75 4.5 小结 76 第5章 JSON操作 77 5.1 JSON简介 77 5.2 JSON基本语法 77 5.3 使用JSON 79 5.3.1 将数据编码为JSON 79 5.3.2 将JSON解码为普通数据 80 5.3.3 PHP中的同类函数 82 5.4 小结 82 第三篇 核心组件 第6章 动态加载类与文件 84 6.1 加载文件 84 6.1.1 动态加载文件 84 6.1.2 判断文件属性 85 6.2 动态加载类 86 6.3 小结 87 第7章 对象注册表 88 7.1 创建对象注册表 88 7.1.1 为Registry实例化一个对象 88 7.1.2 使用set()方法为对象注册表设置值 89 7.2 访问对象注册表 91 7.2.1 用数组的方式访问 91 7.2.2 用对象的方式访问 91 7.3 编辑对象注册表 92 7.3.1 查询索引是否存在 92 7.3.2 删除静态注册表 93 7.4 小结 94 第8章 使用配置数据 95 8.1 从PHP配置文件中读取数据 95 8.1.1 从PHP数组中读取数据 95 8.1.2 从PHP配置文件中读取数据 96 8.2 从ini配置文件中读取数据 98 8.2.1 从ini文件中读取数据 98 8.2.2 以数组形式调用读出数据 100 8.3 从XML配置文件中读取数据 100 8.4 小结 102 第9章 命令的设置与参数 103 9.1 Getopt概述 103 9.2 定义Getopt规则 104 9.2.1 用短语法定义 104 9.2.2 用长语法定义 104 9.3 配置Zend_Console_Getopt 105 9.3.1 添加设置规则 105 9.3.2 添加参数列表 106 9.3.3 添加设置选项 107 9.4 取出配置与参数 107 9.4.1 通过名称获取配置 107 9.4.2 获取所有配置信息 108 9.4.3 获取没有配置的参数 109 9.5 小结 110 第10章 过滤器 111 10.1 过滤器的使用方法 111 10.1.1 使用单个过滤器 111 10.1.2 使用过滤器链 112 10.2 系统预定义过滤器 114 10.2.1 Alnum字母或数值过滤器 114 10.2.2 HtmlEntities HTML过滤器 115 10.2.3 Int整型数过滤器 116 10.2.4 StripTags HTML字符过滤器 117 10.3 Zend_Filter_Input过滤器 118 10.3.1 定义过滤与校验规则 119 10.3.2 创建Input过滤器 120 10.3.3 检索处理后的字段与其他内容 120 10.3.4 实战Zend_Filter_Input 121 10.4 创建自定义过滤器 124 10.5 小结 125 第11章 校验器 126 11.1 单个校验器的使用 126 11.1.1 使用new关键字 126 11.1.2 自定义返回的错误信息 128 11.1.3 使用静态方法is() 129 11.2 使用校验器链 130 11.3 预定义校验器 131 11.3.1 Date日期校验器 132 11.3.2 Hostname主机地址校验器 133 11.3.3 InArray数组包含校验器 134 11.3.4 Regex正则匹配校验器 135 11.4 编写自定义校验器 136 11.5 小结 138 第12章 调试与异常处理 139 12.1 Debug代码调试 139 12.2 Exception异常处理 140 12.3 小结 141 第13章 处理URL 142 13.1 关于URL 142 13.2 创建和验证URI 143 13.2.1 创建URI 143 13.2.2 验证URI 143 13.3 Zend_Uri的子类的公共方法 144 13.3.1 获取模式的名称 145 13.3.2 获取整个URI 145 13.3.3 重新验证URI 145 13.4 小结 146 第14章 数据缓存 147 14.1 数据缓存简介 147 14.2 缓存实现原理 148 14.3 Zend_Cache前端 151 14.3.1 Zend_Cache_Core 151 14.3.2 Zend_Cache_Frontend_Output 152 14.3.3 Zend_Cache_Frontend_Function 153 14.3.4 Zend_Cache_Frontend_Class 154 14.3.5 Zend_Cache_Frontend_File 155 14.4 Zend_Cache后端 158 14.4.1 Zend_Cache_Backend_File 158 14.4.2 Zend_Cache_Backend_Sqlite 158 14.5 小结 159 第15章 会话处理 160 15.1 Zend_Session会话简介 160 15.2 Zend_Session基本用法 161 15.2.1 实现会话 161 15.2.2 遍历会话命名空间 162 15.2.3 访问会话命名空间 163 15.3 Zend_Session高级用法 164 15.3.1 开启会话 164 15.3.2 锁定会话命名空间 165 15.3.3 为会话设置生命期 167 15.3.4 防止多重实例 168 15.4 对全局会话的管理 169 15.4.1 配置选项 170 15.4.2 会话生命期的补充 172 15.4.3 Headers Already Sent错误 172 15.5 小结 173 第16章 访问控制列表 174 16.1 资源与角色 174 16.1.1 Zend_Acl中的资源 174 16.1.2 Zend_Acl中的角色 175 16.2 创建并使用访问控制列表 175 16.2.1 创建ACL 176 16.2.2 注册角色及定义访问控制 176 16.2.3 查询ACL状态 177 16.3 ACL的高级用法 179 16.3.1 精细访问控制 179 16.3.2 移除控制规则 181 16.3.3 存储ACL到各种载体 183 16.3.4 有条件的访问规则 185 16.4 小结 186 第17章 访问认证适配器 187 17.1 Zend_Auth简介 187 17.1.1 适配器基础 187 17.1.2 适配器返回结果 188 17.1.3 身份的持久 189 17.1.4 使用Zend_Auth 190 17.2 常用的系统认证适配器 191 17.2.1 使用摘要式认证 191 17.2.2 数据库认证 193 17.2.3 HTTP认证 197 17.3 使用自定义认证适配器 199 17.4 小结 202 第18章 限制内存环境下管理数据 203 18.1 Zend_Memory简介 203 18.2 内存管理器 204 18.2.1 创建内存管理器 204 18.2.2 内存管理器的设置 205 18.2.3 管理内存对象 207 18.3 内存对象接口常用方法 209 18.3.1 getRef()方法 209 18.3.2 touch()方法 210 18.3.3 isLocked()方法 210 18.3.4 lock()方法 211 18.3.5 unlock()方法 212 18.4 小结 213 第19章 邮件操作 214 19.1 Zend_Mail组件的基本用法 214 19.1.1 创建对象 214 19.1.2 设置邮件内容 214 19.1.3 发送邮件 215 19.2 Zend_Mail高级用法 217 19.2.1 使用SMTP发送邮件 217 19.2.2 使用不同的Transport发送邮件 218 19.2.3 发送HTML内容 219 19.2.4 增加附件 219 19.2.5 增加收件人 221 19.2.6 控制MIME分界线 221 19.2.7 更多的头部信息 222 19.2.8 邮件的字符集与编码 223 19.3 读取邮件信息 224 19.3.1 从POP3服务器读取信息 224 19.3.2 打开本地存储器 225 19.3.3 打开远程存储器 226 19.3.4 匹配邮件信息的常用方法 227 19.4 小结 229 第20章 MIME处理 230 20.1 Zend_Mime组件简介 230 20.1.1 Zend_Mime的静态方法 230 20.1.2 Zend_Mime的常量 233 20.1.3 MIME分界线 234 20.2 Zend_Mime_Part 235 20.2.1 实例化Zend_Mime_Part对象 235 20.2.2 Zend_Mime_Part常用方法 237 20.3 Zend_Mime_Message 238 20.3.1 创建Zend_Mime_Message对象 238 20.3.2 增加MIME消息段 238 20.3.3 分界线处理 240 20.3.4 从字符串创建Zend_Mime_Message对象 241 20.4 小结 241 第21章 Log处理 242 21.1 Zend_Log简介 242 21.2 创建并使用Zend_Log对象 242 21.2.1 创建Zend_Log对象 243 21.2.2 使用日志消息 243 21.2.3 销毁日志对象 244 21.2.4 使用内建消息等级 245 21.2.5 使用自定义消息等级 245 21.2.6 日志事件 246 21.3 Zend_Log_Writer容器 247 21.3.1 Zend_Log_Writer_Stream对象 247 21.3.2 Zend_Log_Writer_Null对象 249 21.3.3 Zend_Log_Writer_Mock对象 249 21.3.4 Zend_Log_Writer_Db对象 250 21.3.5 使用组合的Writer 251 21.4 Zend_Log_Formatter格式 252 21.4.1 Zend_Log_Formatter_Simple对象 252 21.4.2 Zend_Log_Formatter_Xml对象 253 21.5 Zend_Log_Filter过滤器 255 21.5.1 过滤所有Writer 255 21.5.2 过滤指定的Writer 256 21.5.3 预定义过滤器 257 21.6 小结 258 第22章 Zend_Version 259 22.1 使用Zend_Version进行版本操作 259 22.1.1 获取当前Zend Framework的版本 259 22.1.2 在不同的Zend Framework版本之间进行比较 259 22.2 小结 261 第四篇 数据操作组件 第23章 文本搜索引擎 264 23.1 Zend_Search_Lucene简介 264 23.1.1 Zend_Search_Lucene的特点 264 23.1.2 Zend_Search_Lucene的组成 264 23.1.3 字段的含义 265 23.2 创建索引 266 23.2.1 创建新的索引 266 23.2.2 更新索引 267 23.2.3 索引的常用方法 268 23.3 搜索索引 272 23.3.1 建立查询 272 23.3.2 搜索结果 274 23.3.3 结果的Score 275 23.4 查询语句语法 275 23.4.1 Query的项 275 23.4.2 查询字段 275 23.4.3 布尔操作符 276 23.4.4 特殊字符的过滤 280 23.5 查询类型 280 23.5.1 单项查询 281 23.5.2 多项查询 281 23.5.3 短语查询 282 23.6 Lucene字符集 283 23.7 扩展Lucene 284 23.7.1 文本分析 284 23.7.2 评分算法 289 23.7.3 存储容器 290 23.8 小结 292 第24章 数据库操作 293 24.1 Zend_Db_Adapter组件 293 24.1.1 创建Zend_Db_Adapter对象 293 24.1.2 查询表中记录 294 24.1.3 插入新的记录 296 24.1.4 修改存在的记录 298 24.1.5 删除存在的记录 300 24.1.6 获取查询结果的方法 301 24.2 Zend_Db_Statement组件 302 24.2.1 创建Statement实例 302 24.2.2 执行被准备的语句 303 24.2.3 匹配结果集 304 24.3 Zend_Db_Profiler组件 307 24.3.1 启用Zend_Db_Profiler 308 24.3.2 常用的方法 308 24.3.3 过滤器的使用 311 24.4 Zend_Db_Select组件 312 24.4.1 创建Zend_Db_Select实例 312 24.4.2 最基本的查询 313 24.4.3 有条件的查询 314 24.4.4 结果排序 315 24.4.5 限制结果数 317 24.4.6 对结果进行分组 319 24.4.7 多表联合查询 321 24.5 Zend_Db_Table组件 321 24.5.1 使用Zend_Db_Table 321 24.5.2 表的主键 322 24.5.3 根据主键取回记录 323 24.5.4 根据其他列取回一条记录 324 24.5.5 根据其他列取回多条记录 326 24.5.6 向表中插入新记录 327 24.5.7 修改已经存在的记录 328 24.5.8 删除已经存在的记录 330 24.6 Zend_Db_Table_Row组件 331 24.6.1 获取Zend_Db_Table_Row对象 331 24.6.2 修改取回的数据 332 24.7 Zend_Db_Table_Rowset组件 333 24.7.1 获取Zend_Db_Table_Rowset对象 334 24.7.2 遍历Zend_Db_Table_Rowset对象 334 24.8 小结 336 第25章 PDF文件操作 337 25.1 Zend_Pdf组件简介 337 25.2 创建或者加载PDF文件 337 25.2.1 使用new关键字创建PDF对象 338 25.2.2 加载已有的PDF文件 338 25.2.3 加载PDF字符串 338 25.3 保存PDF文件或者另存为新的文件 338 25.3.1 将PDF对象保存为文件 339 25.3.2 将PDF对象保存为PDF字符串 339 25.4 PDF页面操作 340 25.4.1 Zend_Pdf_Page简介 340 25.4.2 创建Zend_Pdf_Page页面对象 340 25.5 在PDF页面上绘图 342 25.5.1 获取PDF页面的大小 342 25.5.2 Zend_Pdf的颜色系统 343 25.5.3 在页面上书写文本 343 25.5.4 在页面上绘制几何图形 346 25.5.5 为线条设置样式及使用填充色 350 25.5.6 将图像绘制到页面上 352 25.6 小结 353 第五篇 Web服务组件 第26章 RSS与FEED 356 26.1 Zend_Feed简介 356 26.2 Zend_Feed的基类 356 26.2.1 导入Feed 357 26.2.2 从网页上获取Feed 360 26.3 使用Zend_Feed_Rss 360 26.3.1 创建Zend_Feed_Rss对象 361 26.3.2 RSS channel标准元素 362 26.4 使用Zend_Feed_Atom 363 26.5 其他Zend_Feed操作 364 26.5.1 修改条目内容 365 26.5.2 自定义Feed和条目类 365 26.6 小结 367 第27章 服务组件 368 27.1 Zend_Server简介 368 27.2 Zend_Server_Reflection子类 368 27.2.1 Zend_Server_Reflection简介 368 27.2.2 reflectClass()方法 369 27.2.3 reflectFunction()方法 370 27.3 小结 372 第28章 HTTP服务 373 28.1 Zend_Http_Client基本用法 373 28.1.1 创建Zend_Http_Client对象 373 28.1.2 获取与设置URI 374 28.1.3 设置与获取头部信息 375 28.1.4 修改各项设置 376 28.1.5 执行请求并获取内容 377 28.2 Zend_Http_Client高级用法 380 28.2.1 HTTP重定向 380 28.2.2 使用Cookie 381 28.2.3 实现文件上传 382 28.2.4 HTTP Auth认证 384 28.3 Zend_Http_Client_Adapter连接器 386 28.3.1 Socket连接器 386 28.3.2 Proxy连接器 387 28.3.3 Test连接器 388 28.3.4 自定义连接器 390 28.4 Zend_Http_ Cookie 392 28.4.1 创建实例 392 28.4.2 获取信息方法 393 28.4.3 匹配Cookie 396 28.5 Zend_Http_Response 399 28.5.1 判断是否出错并返回状态 399 28.5.2 判断是否成功 400 28.5.3 返回头部信息 401 28.6 小结 401 第29章 XML-RPC 402 29.1 Zend_XmlRpc_Client 402 29.1.1 XML-RPC请求 402 29.1.2 带有参数的请求 404 29.1.3 参数类型提示 406 29.1.4 发送请求获取响应 407 29.2 Zend_XmlRpc_Server 409 29.2.1 服务端的构成 409 29.2.2 使用命名空间 411 29.2.3 自定义请求 411 29.2.4 自定义响应 411 29.2.5 获取与设置编码 411 29.3 小结 413 第30章 REST服务 414 30.1 Zend_Rest_Client 414 30.1.1 实现基本的REST会话 414 30.1.2 执行请求的多种方法 415 30.1.3 设置与获取URI 416 30.2 Zend_Rest_Server 417 30.2.1 创建服务端过程 417 30.2.2 为服务端添加方法 418 30.2.3 获取方法列表 420 30.2.4 自定义返回内容 421 30.3 小结 422 第31章 其他Web服务 423 31.1 Zend_Service_Amazon 423 31.1.1 搜索内容及注意事项 423 31.1.2 注册Key ID 424 31.1.3 使用传统API 425 31.1.4 使用Query API 427 31.1.5 项目组件 428 31.1.6 图像组件 428 31.1.7 结果集组件 429 31.1.8 其他相关组件 430 31.2 Zend_Service_Flickr 431 31.2.1 创建实例 431 31.2.2 常用方法 432 31.2.3 结果集组件 436 31.2.4 结果组件 437 31.2.5 图像组件 437 31.3 Zend_Service_Yahoo 438 31.3.1 搜索网页 438 31.3.2 搜索图片 440 31.3.3 搜索新闻 441 31.3.4 本地商务搜索 442 31.3.5 结果集组件 444 31.3.6 结果组件 445 31.3.7 网页结果组件 445 31.3.8 新闻结果组件 445 31.3.9 本地结果组件 446 31.3.10 图像结果组件 446 31.3.11 图像组件 447 31.3.12 更多内容 447 31.4 小结 447 第32章 Google服务 448 32.1 Google Data API概述 448 32.1.1 Atom和RSS 448 32.1.2 关于Gdata 449 32.1.3 Gdata的特点 449 32.2 Zend_Gdata简介 450 32.2.1 支持的搜索服务 450 32.2.2 Zend_Gdata的构成 451 32.2.3 用Google Services互动 452 32.2.4 获取Zend_Gdata实例 452 32.2.5 Google Data客户端认证 453 32.2.6 附属内容 453 32.2.7 创建Gdata客户端 453 32.2.8 查询语句参数 454 32.2.9 匹配Feed 456 32.3 使用ClientLogin认证 457 32.4 使用Zend_Gdata_Calendar 458 32.4.1 连接到Calendar服务器 458 32.4.2 创建Calendar服务器实例 462 32.4.3 获取Calendar列表 462 32.4.4 获取事务 464 32.4.5 创建事务 465 32.4.6 快速创建事务 468 32.4.7 修改事务 469 32.4.8 删除事务 471 32.5 使用Zend_Gdata_Spreadsheets 472 32.5.1 创建Spreadsheet 473 32.5.2 获取Spreadsheet列表 473 32.5.3 获取工作簿列表 474 32.5.4 获取工作簿内容 476 32.5.5 其他操作 478 32.6 小结 478 第六篇 国际化组件 第33章 本地化 480 33.1 Localization概述 480 33.1.1 本地化的组成 480 33.1.2 关于Locale 481 33.1.3 Locale如何描述 481 33.1.4 创建Zend_Locale实例 482 33.1.5 选择正确的语言 482 33.1.6 ZF Locale-Aware类 483 33.2 使用Zend_Locale 484 33.2.1 使用Zend_Locale 484 33.2.2 比较不同的Locale 485 33.2.3 默认区域 486 33.2.4 设置新的区域 486 33.2.5 获取语言和区域 487 33.2.6 获取本地化字符串 487 33.2.7 获取YES/NO的本地化字符串 490 33.3 正常化和本地化 491 33.3.1 数值的正常化 492 33.3.2 数值的本地化 492 33.3.3 使用自定义数值格式 493 33.3.4 判断是否为数值 494 33.3.5 浮点数正常化 495 33.3.6 浮点数本地化 496 33.3.7 判断是否为浮点数 496 33.3.8 整型数正常化 497 33.3.9 整型数本地化 498 33.3.10 判断是否为整型数 498 33.3.11 实现数值系统的转换 499 33.4 和日期时间协同工作 500 33.4.1 正常化日期 501 33.4.2 检测日期格式是否正确 503 33.4.3 其他日期时间用法 504 33.5 小结 504 第34章 多语言 505 34.1 Zend_Translate简介 505 34.2 Zend_Translate适配器 506 34.2.1 选用合适的适配器 506 34.2.2 使用自定义适配器 507 34.3 使用翻译适配器 508 34.3.1 翻译适配器翻译实例 508 34.3.2 创建数组源文件 509 34.3.3 创建Gettext源文件 510 34.3.4 创建TMX源文件 511 34.3.5 创建CSV源文件 512 34.3.6 适配器的设置 513 34.3.7 设置并获取语言 515 34.4 小结 516 第35章 日期时间 517 35.1 Zend_Date简介 517 35.1.1 设置默认时区 517 35.1.2 使用Zend_Date的优点 518 35.2 Zend_Date的基本方法 519 35.2.1 当前的日期时间 519 35.2.2 获取时间戳记 519 35.2.3 设置日期时间 520 35.2.4 日期时间的加减操作 521 35.2.5 日期时间的比较 521 35.2.6 判断日期时间相等 522 35.3 Zend_Date常量 523 35.4 小结 525 第36章 Zend_Measure 526 36.1 Zend_Measure简介 526 36.1.1 简单的转换示例 526 36.1.2 “米”的使用 527 36.1.3 Zend_Measure的类型 527 36.2 使用Zend_Measure 528 36.2.1 从数值创建对象 529 36.2.2 从字符串创建对象 529 36.2.3 从本地化字符串创建对象 530 36.3 输出计量对象 531 36.3.1 直接输出 531 36.3.2 输出值 531 36.3.3 输出计量单位 532 36.4 常用的Zend_Measure操作 533 36.4.1 计量单位转换 533 36.4.2 加减运算 534 36.4.3 是否相等比较 535 36.4.4 大小比较 536 36.4.5 改变现有值 537 36.4.6 改变现有类型 537 36.5 小结 538 第七篇 综合应用 第37章 MVC新闻管理系统 540 37.1 总体设计 540 37.2 目录结构 540 37.3 数据表的创建 541 37.4 创建入口文件 542 37.5 设置控制器 543 37.6 设置视图 547 37.6.1 浏览视图 547 37.6.2 管理视图 548 37.6.3 添加视图 549 37.6.4 修改视图 550 37.6.5 删除视图 551 37.6.6 头部与尾部视图 552 37.7 功能测试 553 37.8 小结 555 |
商品评论(0条)