描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302475248
知识点全
本书紧密围绕 PHP 语言展开讲解,具有很强的逻辑性和系统性。
实例丰富
书中各实例均经过作者精心设计和挑选,它们都是根据作者在实际开发中的经验总结而来的,涵盖了在实际开发中所遇到的各种问题。
应用广泛
对于精选案例,给出了详细步骤,结构清晰简明,分析深入浅出,而且有些程序能够直接在项目中使用,避免读者进行重复开发。
基于理论,注重实践
在讲述过程中,不只是介绍理论知识,而且在合适位置安排综合应用实例,或者小型应用程序,将理论知识应用到实践中,来加强读者的实际应用能力,巩固所学的相关知识。
在近几年中,PHP已经发展成为世界上*为流行的Web平台,它运行在全球超过1/3的Web服务器上。PHP的发展不仅是数量上的,也是质量上的。越来越多的公司,包括全球500强榜上的公司都依靠PHP来运行它们的商业级应用,从而创造了新的就业机会并增加了更多的PHP开发需求。
本书共分14章,主要内容包括PHP环境的搭建、PHP开发工具、变量和常量、运算符与表达式、流程控制、数学函数、字符串搜索和截取、文件读写、文件上传与下载等。在应用方面介绍了PHP获取HTML表单数据,获取Cookie和Session数据,获取数据库数据,获取XML和JSON数据,获取Ajax异步数据等知识。*后一章介绍了常用的几种设计模式在PHP中的实现,如单例模式、工厂方法、适配器模式和状态模式等。
本书可以作为高等院校计算机相关专业PHP语言程序设计课程的教材,也可以作为PHP程序设计的培训教材,还可以作为自学者的参考书。
第1 章 PHP 入门基础
1.1 PHP 简介 2
1.1.1 PHP 发展历史 2
1.1.2 PHP 的优势 3
1.2 配置PHP 运行环境 4
1.2.1 高手带你做——安装Apache 4
1.2.2 高手带你做——配置PHP 5 5
1.3 查看PHP 配置文件 8
1.4 选择PHP 语法风格 9
1.4.1 默认标记 9
1.4.2 ASP 风格标记 9
1.4.3 脚本标记 10
1.4.4 短标记 10
1.5 程序注释 12
1.5.1 单行注释 12
1.5.2 多行注释 12
1.6 快速搭建PHP 环境 13
1.6.1 高手带你做——安装WampServer 13
1.6.2 高手带你做——安装phpStudy 15
1.7 PHP 开发工具 17
1.7.1 Sublime Text 17
1.7.2 PhpStorm 19
1.8 高手带你做——自定义Apache
的主目录 21
1.9 高手带你做——在IIS 上配置PHP
环境 22
1.10 成长任务 24
第2 章 PHP 基础语法
2.1 常量 26
2.1.1 定义常量 26
2.1.2 引用常量 26
2.1.3 const 关键字 27
2.1.4 高手带你做——认识魔术常量 28
2.2 变量 29
2.2.1 声明变量 29
2.2.2 变量赋值 30
2.2.3 可变变量 31
2.2.4 变量的作用域 32
2.2.5 变量销毁 35
2.2.6 高手带你做——超级全局变量 35
2.3 数据类型 36
2.3.1 标量数据类型 36
2.3.2 复合数据类型 40
2.3.3 特殊数据类型 41
2.4 数据类型转换 43
2.4.1 强制类型转换 43
2.4.2 自动类型转换 45
2.4.3 数据类型函数 46
2.5 运算符 47
2.5.1 算术运算符 47
2.5.2 赋值运算符 48
2.5.3 逻辑运算符 48
2.5.4 比较运算符 49
2.5.5 位运算符 50
2.5.6 递增与递减运算符 50
2.5.7 错误控制运算符 51
2.6 高手带你做——认识条件运算符 52
2.7 表达式 53
2.8 运算符的优先级 54
2.9 PHP 输出函数 55
2.9.1 echo() 函数 55
2.9.2 print() 函数 56
2.9.3 printf() 函数 58
2.9.4 格式控制 58
2.9.5 sprintf() 函数 60
2.9.6 高手带你做——考生信息输出 61
2.10 成长任务 62
第3 章
流程控制语句
3.1 了解算法 64
3.1.1 算法的定义 64
3.1.2 高手带你做——使用算法
求1 到4 的和 64
3.1.3 算法描述方式 65
3.2 顺序结构 68
3.2.1 语句编写方式 68
3.2.2 空语句 69
3.2.3 表达式语句 69
3.2.4 复合语句 69
3.3 if 条件语句 70
3.3.1 if 语句的语法 70
3.3.2 双条件if 语句 72
3.3.3 多条件if 语句 73
3.3.4 高手带你做——嵌套if 的使用 74
3.4 switch 条件语句 75
3.4.1 switch 语句的格式 75
3.4.2 if 语句和switch 语句的区别 77
3.4.3 高手带你做——根据出生
日期判断星座 78
3.5 循环语句 79
3.5.1 while 语句 79
3.5.2 do while 语句 80
3.5.3 for 语句 81
3.5.4 高手带你做——九九乘法口诀表 84
3.5.5 foreach 语句 85
3.6 其他语句 86
3.6.1 return 语句 87
3.6.2 break 语句 88
3.6.3 continue 语句 89
3.6.4 goto 语句 90
3.7 高手带你做——判断闰年 91
3.8 高手带你做——输出杨辉三角形 92
3.9 成长任务 93
第4 章 PHP 函数
4.1 用户函数 96
4.1.1 函数定义的语法结构 96
4.1.2 使用函数 97
4.1.3 函数的返回值 97
4.1.4 按值传递参数 98
4.1.5 按引用传递参数 99
4.1.6 默认值传递参数 100
4.1.7 可变参数列表 101
4.1.8 变量、常量与函数 102
4.1.9 高手带你做——判断函数
是否存在 103
4.2 高手带你做——函数高级应用 103
4.2.1 递归函数 104
4.2.2 嵌套函数 104
4.2.3 变量函数 105
4.3 变量处理函数 106
4.4 数学函数 106
4.5 日期和时间函数 107
4.5.1 checkdate() 函数 108
4.5.2 getdate() 函数 108
4.5.3 date() 函数 109
4.5.4 strtotime() 函数 111
4.5.5 microtime() 函数 112
4.5.6 gmdate() 函数 112
4.5.7 time() 函数 112
4.6 实战——模拟实现用户系统
登录功能 113
4.7 引用文件的函数 114
4.7.1 include() 函数 115
4.7.2 require() 函数 116
4.7.3 include_once() 函数和
require_once() 函数 118
4.8 成长任务 120
第5 章
面向对象编程
5.1 面向对象简介 122
5.1.1 对象的概念 122
5.1.2 抽象性 122
5.1.3 封装性 123
5.1.4 继承性 123
5.1.5 多态性 124
5.2 类和对象 125
5.2.1 高手带你做——认识类和对象 125
5.2.2 定义类 126
5.2.3 实例化类 127
5.3 类的成员 127
5.3.1 常量 127
5.3.2 字段 128
5.3.3 属性 131
5.3.4 方法 133
5.4 构造函数和析构函数 134
5.4.1 构造函数 135
5.4.2 高手带你做——查看个人信息 136
5.4.3 析构函数 137
5.5 作用域关键字 138
5.5.1 abstract 关键字 138
5.5.2 final 关键字 139
5.5.3 private 关键字 139
5.5.4 protected 关键字 140
5.5.5 public 关键字 141
5.5.6 static 关键字 142
5.6 继承 143
5.6.1 类继承 143
5.6.2 构造函数继承 145
5.6.3 高手带你做——实现图书
分类显示 146
5.7 PHP 实现接口 148
5.7.1 接口概述 148
5.7.2 定义接口 149
5.7.3 实现接口 149
5.8 成长任务 152
第6 章
数组的应用
6.1 认识数组 154
6.2 基本操作 155
6.2.1 通过赋值创建数组 155
6.2.2 使用array() 函数创建数组 156
6.2.3 创建多维数组 157
6.2.4 输出数组内容 159
6.2.5 测试数组 160
6.3 遍历数组 161
6.3.1 foreach 语句遍历 161
6.3.2 for 语句遍历 162
6.3.3 each() 函数遍历 163
6.3.4 遍历数组的函数 164
6.4 简单计算 164
6.4.1 计算元素总数 164
6.4.2 计算元素出现的频率 165
6.4.3 计算出现的所有元素 166
6.5 元素操作 166
6.5.1 增加元素 167
6.5.2 删除元素 169
6.5.3 定位元素 170
6.5.4 提取元素 173
6.6 数组排序 176
6.6.1 按值排序 176
6.6.2 按键排序 178
6.6.3 关联排序 179
6.6.4 高手带你做——级联排序 181
6.6.5 高手带你做——按先奇后偶
的降序排列数组 182
6.7 其他操作 183
6.7.1 高手带你做——随机获取元素 183
6.7.2 联合数组 184
6.7.3 合并数组 185
6.7.4 拆分数组 187
6.7.5 替换数组 188
6.7.6 判断数组的类型 189
6.7.7 查找键名是否存在 190
6.7.8 查找值是否存在 191
6.7.9 去除重复元素值 192
6.7.10 高手带你做——数组键名和
值调换 193
6.8 成长任务 194
第7 章
字符串应用
7.1 字符串简介 196
7.2 定义字符串 196
7.2.1 使用单引号 197
7.2.2 使用双引号 197
7.2.3 使用定界符 198
7.3 高手带你做——连接多个字符串 199
7.4 统计字符串 199
7.4.1 统计字符串的长度 200
7.4.2 统计字符的出现频率 200
7.4.3 统计单词数量 201
7.5 操作字符串内容 202
7.5.1 大小写替换 202
7.5.2 去除空格和特殊字符 204
7.5.3 比较字符串 206
7.5.4 查找字符串 208
7.6 操作子字符串 210
7.6.1 分隔字符串 210
7.6.2 填充字符串 212
7.6.3 截取字符串 213
7.6.4 替换字符串 216
7.7 高手带你做——字符串与
HTML 转换 218
7.8 字符串编码 222
7.8.1 高手带你做——认识字符集
与编码 222
7.8.2 页面编码设置 225
7.8.3 编码转换 227
7.8.4 字符串加密 228
7.9 成长任务 230
第8 章
文件处理
8.1 查看文件属性信息 232
8.1.1 文件类型 232
8.1.2 文件大小 232
8.1.3 访问和修改时间 233
8.1.4 其他属性的获取 234
8.2 高手带你做——操作文件 235
8.2.1 复制文件 236
8.2.2 重命名文件 236
8.2.3 删除文件 236
8.3 打开和关闭文件 237
8.3.1 打开文件 237
8.3.2 关闭文件 238
8.4 读取文件 238
8.4.1 读取一行 239
8.4.2 读取指定字节 242
8.4.3 读取全部内容 244
8.4.4 其他读取函数 245
8.5 写入文件 246
8.5.1 fwrite() 函数 247
8.5.2 fputs() 函数 248
8.5.3 file_put_contents() 函数 249
8.6 高手带你做——认识文件指针 250
8.6.1 fseek() 函数 251
8.6.2 ftell() 函数 251
8.6.3 rewind() 函数 252
8.7 操作目录 252
8.7.1 打开目录 252
8.7.2 关闭目录 253
8.7.3 遍历目录 253
8.7.4 创建目录 256
8.7.5 删除目录 256
8.8 解析路径 257
8.8.1 获取文件名 257
8.8.2 获取目录部分 257
8.8.3 获取路径中的各个部分 257
8.8.4 获取路径 258
8.9 读取磁盘属性 259
8.9.1 获取目录所在磁盘的
可用空间 259
8.9.2 获取磁盘总容量 260
8.9.3 高手带你做——获取目录
占用的空间 260
8.10 高手带你做——实现项目的新增
和保存 262
8.11 成长任务 265
第9 章
获取页面数据
9.1 认识HTML 表单 268
9.2 制作HTML 表单 268
9.2.1 表单的组成元素 269
9.2.2 表单标签 270
9.2.3 文本框 270
9.2.4 多行文本框 271
9.2.5 隐藏域 271
9.2.6 复选框 272
9.2.7 单选按钮 272
9.2.8 下拉选择框 273
9.2.9 文件上传框 274
9.2.10 表单按钮 274
9.3 获取表单数据 275
9.3.1 设置表单提交方式 276
9.3.2 获取GET 提交的数据 277
9.3.3 获取POST 提交的数据 279
9.4 表单的常见操作 280
9.4.1 遍历表单 280
9.4.2 获取表单中的多值 282
9.4.3 高手带你做——动态生成表单 284
9.5 高手带你做——表单处理技巧 288
9.5.1 检测表单提交路径 288
9.5.2 避免表单重复提交 290
9.5.3 表单过期处理 292
9.6 转换URL 中的汉字 293
9.6.1 编码操作 293
9.6.2 解码操作 293
9.7 文件上传 294
9.7.1 准备文件上传表单 294
9.7.2 处理上传文件 295
9.8 文件下载 297
9.9 高手带你做——身份验证 299
9.9.1 HTTP 身份验证 299
9.9.2 PHP 身份认证 300
9.10 成长任务 303
第10 章
会话处理
10.1 了解Cookie 306
10.1.1 Cookie 简介 306
10.1.2 Cookie 的工作原理 306
10.1.3 Cookie 的类型和属性 307
10.2 操作Cookie 308
10.2.1 创建Cookie 308
10.2.2 读取Cookie 309
10.2.3 设置Cookie 过期时间 311
10.2.4 高手带你做——删除Cookie 312
10.3 高手带你做——实现记住上次
登录时间 313
10.4 了解Session 316
10.4.1 Session 简介 316
10.4.2 Session 的常用函数 317
10.5 操作Session 318
10.5.1 获取Session ID 318
10.5.2 读写Session 数据 319
10.5.3 编码Session 数据 323
10.5.4 解码Session 数据 324
10.5.5 删除Session 数据 325
10.5.6 Session 的缓存 326
10.6 高手带你做——实现购物车 327
10.7 高手带你做——认识Cookie
与Session 的区别 333
10.8 成长任务 334
第11 章
数据库编程
11.1 MySQL 数据库 336
11.1.1 安装MySQL 数据库 336
11.1.2 配置MySQL 数据库 338
11.1.3 高手带你做——MySQL
快速入门操作 340
11.2 PHP 连接MySQL 方式 341
11.2.1 mysql 库 342
11.2.2 mysqli 库 342
11.2.3 PDO 库 343
11.3 连接MySQL 数据库 344
11.3.1 创建连接对象 344
11.3.2 设置连接选项 345
11.3.3 测试连接错误 346
11.3.4 关闭连接 346
11.4 基本操作 347
11.4.1 执行更新语句 348
11.4.2 mysqli_result 类 349
11.4.3 fetch_row() 方法 350
11.4.4 fetch_assoc() 方法 351
11.4.5 fetch_array() 方法 352
11.4.6 fetch_object() 方法 353
11.4.7 获取数据列的信息 354
11.4.8 一次执行多条SQL 命令 355
11.5 使用预处理语句 357
11.5.1 mysqli_stmt 类 357
11.5.2 绑定参数预处理语句 358
11.5.3 绑定结果预处理语句 360
11.6 读取数据库显示乱码解决方案 361
11.6.1 了解产生乱码的原因 361
11.6.2 PHP 网页的编码 361
11.6.3 MySQL 数据库的编码 362
11.7 高手带你做——数据分页显示 362
11.8 高手带你做——数据库事务处理 365
11.9 成长任务 368
第12 章 XML 和JSON 处理
12.1 XML 简介 370
12.1.1 XML 概述 370
12.1.2 XML 的基本结构 370
12.1.3 XML 声明 371
12.1.4 XML 实体 371
12.1.5 高手带你做——创建水果
信息XML 文件 372
12.1.6 命名空间 372
12.2 高手带你做——生成水果信息
XML 文件 373
12.3 XML 解析器 374
12.3.1 DOM 解析XML 374
12.3.2 SAX 解析XML 377
12.3.3 高手带你做——SAX 解析
XML 文件 380
12.3.4 SimpleXML 解析XML 382
12.4 高手带你做——管理报表项目信息 385
12.5 高手带你做——JavaScript 读取
APP 信息 390
12.6 处理JSON 格式响应 393
12.6.1 JSON 语法 393
12.6.2 编码JSON 数据 394
12.6.3 解码JSON 数据 396
12.7 成长任务 397
第13 章 PHP 高级编程技术
13.1 正则表达式语法 400
13.1.1 正则表达式概述 400
13.1.2 Perl 风格的正则表达式 402
13.2 PHP 正则表达式的使用 404
13.2.1 正则表达式函数 404
13.2.2 简单匹配 405
13.2.3 全局匹配 406
13.2.4 获取与模式匹配的数组 407
13.2.5 转义字符 408
13.2.6 搜索和替换函数 409
13.2.7 分割字符串 410
13.3 高手带你做——校验常见数据 411
13.4 错误和异常处理 413
13.4.1 PHP 错误级别 413
13.4.2 配置文件选项 414
13.4.3 内置处理函数 415
13.4.4 异常处理语句 419
13.4.5 高手带你做——自定义
异常类 421
13.5 Ajax 异步通信 422
13.5.1 Ajax 简介 422
13.5.2 XMLHttpRequest 对象简介 423
13.5.3 高手带你做——读取异步
提交的项目信息 425
13.5.4 高手带你做——读取用户列表 429
13.5.5 高手带你做——处理JSON 431
13.5.6 高手带你做——Ajax 中文
乱码解决方案 432
13.6 PHP 开发编程规范 433
13.6.1 项目结构规范 434
13.6.2 程序注释 434
13.6.3 命名规范 436
13.6.4 代码编写规范 437
13.6.5 包含文件 439
13.7 成长任务 440
第14 章 PHP 设计模式
14.1 认识设计模式 442
14.1.1 设计模式简介 442
14.1.2 设计模式的理解 442
14.1.3 设计模式的分类 443
14.1.4 为什么要学习设计模式 444
14.1.5 如何学习设计模式 445
14.1.6 学习设计模式的层次 445
14.1.7 面向对象的设计原则 446
14.2 单例模式 447
14.3 简单工厂 448
14.4 工厂方法 452
14.5 抽象工厂 454
14.6 适配器模式 455
14.7 外观模式 457
14.8 观察者模式 459
14.9 状态模式 461
14.10 不要过度使用设计模式 464
前言
PHP 是全球普及、应用广泛的互联网开发语言之一,它有开放的源代码、独特的语法结构,包含了C、Java、Perl 等语言的特点,具备多种数据库和操作系统的支持,而且是完全免费的。
越来越多的大公司,如IBM、Adobe、Cisco 等,都已经在应用PHP 技术,PHP 已成为众多开发者的语言。
为了帮助广大读者掌握PHP 开发技术,作者精心编写了本书。本书以PHP 5 为例,详细介绍使用PHP 进行网站开发所需掌握的各方面知识。本书可作为各院校在校生和相关授课老师的教材,也可以作为编程自学者的入门参考书。
本书内容
本书共分14 章,主要内容如下。
第1 章 PHP 入门基础。主要介绍PHP 语言的基础知识,包括PHP 发展史、PHP 环境的搭建、PHP 语法风格和注释、PHP 的集成环境以及第三方开发工具。
第2 章 PHP 基础语法。详细介绍PHP 程序中的基本数据类型、变量、常量、运算符和表达式等相关知识。
第3 章
流程控制语句。首先简单介绍算法的描述方式,重点介绍PHP 条件语句和循环语句的使用,包括if、switch、for、while、do while、break 等。
第4 章 PHP 函数。首先介绍如何自定义函数,调用函数和为函数指定参数,然后介绍了PHP 中的数学函数、日期和时间类函数、文件包含函数。
第5 章
面向对象编程。简单介绍面向对象的概念,重点对PHP 中的实现进行介绍,包括创建类、构造函数、类常量、类的方法、PHP 作用域关键字以及继承的实现等。
第6 章
数组的应用。主要介绍PHP 对数组的操作,包括定义数组、遍历数组、数组元素的管理,数组排序、合并以及替换和搜索等。
第7 章
字符串应用。详细介绍PHP 支持的字符串操作,包括字符串的字义,对字符串进行大小写统一、替换、截取、填充、编码以及解码等。
第8 章
文件处理。详细介绍PHP 支持的文件操作,像获取文件的大小、读取文件的一行、写入内容、删除文件、创建目录、解析文件名以及获取可用空间等。
第9 章
获取页面数据。主要介绍获取HTML 表单数据的方法,包括HTML 表单元素、表单提交方法、获取单选和多选值、URL 编码和解码、文件的上传和下载等。
第10 章
会话处理。主要介绍在PHP 中使用Cookie 和Session 保存数据、读取数据、设置数据有效期的方法。
第11 章
数据库编程。主要介绍PHP 获取MySQL 数据的方法,包括MySQL 的安装和配置、数据库的连接和关闭、执行更新语句、获取Select 结果、获取列信息、使用预处理语句以及乱码的解决方案。
第12 章 XML 和JSON 处理。首先介绍XML 的语法,然后介绍PHP 操作XML 的解析器以及解析方法,后对JSON 的编码和解码进行介绍。
第13 章 PHP 高级编程技术。从4 个方面介绍PHP 的高级编程技术,分别是正则表达式的处理、异常处理、Ajax 异步通信以及常用PHP 编程规范。
第14 章 PHP 设计模式。首先介绍设计模式的概念和分类,然后介绍常用的设计模式,包括单例模式、简单工厂、工厂方法、抽象工厂、适配器模式、外观模式、观察者模式和状态模式。
本书特色
本书中的大量内容来自真实的程序范例,使读者更容易掌握PHP 程序的开发技能。本书难度适中,内容由浅入深,实用性强,覆盖面广,条理清晰。
知识点全
本书紧密围绕PHP 语言展开讲解,具有很强的逻辑性和系统性。
实例丰富
书中各实例均经过作者精心设计和挑选,它们都是根据作者在实际开发中的经验总结而来的,涵盖了在实际开发中所遇到的各种问题。
应用广泛
对于精选案例,给出了详细步骤,结构清晰简明,分析深入浅出,而且有些程序能够直接在项目中使用,避免读者进行重复开发。
基于理论,注重实践
在讲述过程中,不只是介绍理论知识,而且在合适位置安排综合应用实例,或者小型应用程序,将理论知识应用到实践中,来加强读者的实际应用能力,巩固所学的相关知识。
贴心的提示
为了便于读者阅读,全书还穿插着一些技巧、提示等小贴士,体例约定如下。
提示:通常是一些贴心的提醒,让读者加深印象或得到解决问题的方法。
注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。
技巧:通过简短的文字,指出知识点在应用时的一些小窍门。
读者对象
本书适合作为软件开发入门者的自学用书,也适合作为高等院校相关专业的教学用书,还可供在职开发人员查阅、参考。本书尤其适合下列人员使用:
? PHP 语言开发入门者。
? PHP 语言的初学者以及在校学生。
? 准备从事PHP 开发的相关人员。
? 各大中专院校的在校学生和相关的授课老师。
? 有一定编程基础,想进一步提高技能的人员。
本书由李鑫、王瑞敬编著,参与编写的人员还有郑志荣、侯艳书、刘利利、侯政洪、肖进、李海燕、侯政云、祝红涛、崔再喜、贺春雷等,在此表示感谢。在本书的编写过程中,我们力求精益求精,但难免存在疏漏和不足之处,敬请广大读者批评指正。
编
者
第2 章 PHP 基础语法
要想编写规范、可读性高的PHP 程序,就必须对PHP 基本语法有所了解。基本语法是所有编程语言都必须掌握的基础知识,也是整个程序代码不可缺少的重要部分。
一个PHP 程序通常由数据类型、变量、运算符和控制流程语句4 部分组成。其中数据类型和运算符不仅定义了语言的规范,还决定了可以执行什么样的操作;变量用来存储指定类型的数据,其值在程序运行期间是可变的;与变量对应的还有一个常量,其值是固定的。
本章详细介绍PHP 程序中的基本数据类型、变量、常量、运算符、表达式等相关知识,控制流程在下一章介绍。对初学者来说,应该对本章的每个小节进行仔细阅读、思考,这样才能达到事半功倍的效果。
2.1 常量
常量是指在程序的整个运行过程中值保持不变的量。在这里要注意,常量和常量值是不同的概念。常量值是常量的具体和直观的表现形式; 常量是形式化的表现。通常在程序中既可以直接使用常量值也可以使用常量。
下面我们来系统地认识一下PHP 的常量值,以及定义常量的方法。
2.1.1 定义常量
通常将常量作为一个应用程序的配置信息或保存为不变化的值,例如标识位和参数配置信息等。PHP 中通过define() 函数实现常量的定义,基本语法如下:
define(“CONSTANT_NAME”, 常量值[,bool
case_insensitive])
上述语法中包含3 个参数,具体说明如下。
●● CONSTANT_NAME 表示常量名称,默认为大小写敏感,一般是一个大写字符串。常量名和其他任何PHP 标签遵循同样的命名规则,合法的常量名以字母或下划线开始,后面跟着字母、数字或下划线。
●●
常量值 常量的值可以定义为字符串、整型、浮点型或布尔型,不能定义资源类型的常量。如果定义为布尔型,则默认为true。
●● case_insensitive 这是一个可选参数,将该参数的值设置为true 时,表示后面对此常量的引用将不区分大小写。
【例2-1】
下面在PHP 脚本中定义一些常量,这些常量有的合法,有的不合法。代码如下:
define(“APP_URL”,”www.baidu.com”);
// 合法
define(“DB_USER”,”admin”);
// 合法
define(“FOO”,”something”);
// 合法
define(“FOO2″,” 中文”); //
合法
define(“2FOO”,” 中文”); //
不合法的变量名
define(“_FOO_”,”something”);
// 合法
上述代码中,虽然后一行自定义的常量是合法的,但是应该避免这样定义。因为PHP中的魔术常量是以“_”开头的,或许有一天PHP 中会定义一个_FOO_ 魔术常量,这样就会与上述定义产生冲突。
常量的定义非常简单,但是定义常量时还需要注意以下事项:
●●
常量前面没有美元符号($)。
●●
一旦定义常量,就不能重新定义或取消已定义的常量。
●●
如果需要根据常量生成一个值,这个值必须存储在另一个变量中。
●●
常量是全局的,可以在脚本的任何位置引用。
2.1.2 引用常量
常量定义完成后就可以引用了,引用常量时只需要使用它的名称即可。
【例2-2】
下面使用PI 作为计算的常数。首先通过define() 定义名称为PI 的常量;接着输出常量PI 的值;然后将常量的值乘以100 进行计算;后输出执行的结果。代码如下:
<?php
define(“PI”, 3.1415926);
echo “PI 的值是:”.PI;
$result = PI * 100;
echo “n 计算PI 乘以100 的值:$result”;
?>
由于常量在PHP 中具有全局作用域,包含在函数和类中,因此可以用作一个标识位,进行布尔值验证。
【例2-3】
下面的示例演示了在布尔表达式中引用常量的值,代码如下:
<?php
$error_code = 2;
define(“MY_ERROR”, 2); // 定义常量MY_ERROR
if($error_code == MY_ERROR){ // 在表达式中使用MY_ERROR
常量
echo ” 遇到了错误”;
}
?>
2.1.3 const 关键字
define() 函数自定义的常量是全局的,它可以在脚本的任意位置使用。但是,如果要在PHP 的类中定义一个常量,使用define() 函数是错误的,这时可以使用const 关键字。使用const 修饰的常量与define() 函数一样,一旦定义就不能在程序的任何地方进行“人为”修改。而且,它定义的常量也需要遵循常量的命名规则。
【例2-4】
使用const 关键字定义一个常量,并且在方法中引用该常量。代码如下:
<?php
class Test {
const NAME = 100; // 在类中定义NAME 常量
function classN() {
echo Test::NAME * 312;
}
}
$t = new Test ();
$t->classN (); //输出结果:31200
?>
上述代码使用Test::NAME 的方式访问常量,其中Test 表示类名,NAME 表示定义的常量名。在PHP 的类中,const 变量可以使用parent::YOUCONST 的方式或className::YOUCONST的方式在子类中访问,YOUCONST 表示常量名称;const 定义的常量,在子类中可以被覆盖。const 关键字和define() 函数都可用于定义常量,但是一般情况下只使用后者,前者在类中使用频繁,两者的区别如下:
●● const 用于类成员变量的定义,一经定义,不可修改;define() 函数不可用于类成员变量的定义,而用于全局常量。
●● const可以在类中使用;而define() 函数则不能。
●● const不能在条件语句中定义常量。
●● const采用一个普通的常量名称;define() 可以采用表达式作为常量名称。
●● const只能接受静态的标识;而define() 函数可以采用任何表达式。
●● const定义常量时大小写敏感;而define()函数可通过参数设置来指定大小写是否敏感。
2.1.4 高手带你做——认识魔术常量
PHP为运行时的脚本提供了大量的预定义常量,简称系统常量。PHP除了有预定义变量外,还有比预定义变量更多的预定义常量。它们很多都是由扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时就已经包括进去了。
魔术常量保存着PHP 脚本运行时的状态,例如当前脚本名称和运行的行号等内容。PHP中包含多个魔术常量,其说明如表2-1 所示。
表2-1 魔术常量列表
魔术常量名称说
明
__LINE__ 返回运行中PHP 脚本的当前行号
__FILE__ 返回当前执行PHP 脚本的完整路径和文件名,包含一个路径
__FUNCTION__ 函数名称,返回该函数被定义时的名字( 大小写敏感)
__CLASS__ 类名称,返回该类被定义时的名字( 大小写敏感)
__METHOD__ 类的成员方法名称,返回该方法被定义时的名称(
大小写敏感)
__DIR__ 目录,返回当前脚本的目录
__NAMESPACE__ 命名空间,返回当前脚本的命名空间
【例2-5】
在PHP 脚本中定义名称为magicContstant 的类,在该类使用showMagic() 方法打印表2-1
列出的魔术常量的内容。代码如下:
<?php
class magicContstant {
function showMagic() {
echo “__LINE__=” . __LINE__ .
“n”; // 当前行号
echo “__FILE__=” . __FILE__ .
“n”; // 当前文件所在路径
echo “__FUNCTION__=” .
__FUNCTION__ . “n”; // 当前函数名称
echo “__CLASS__=” . __CLASS__ .
“n”; // 类名
echo “__METHOD__=” . __METHOD__ .
“n”; // 方法名
echo “__DIR__=” . __DIR__ .
“n”; // 目录名
echo “__NAMESPACE__=” .
__NAMESPACE__ . “n”; // 命名空间
}
}
$test = new magicContstant ();
$test->showMagic ();
?>
执行上述代码后,输出结果如下:
__LINE__=4
__FILE__=E:php_spacech02magicContstant.php
__FUNCTION__=showMagic
__CLASS__=magicContstant
__METHOD__=magicContstant::showMagic
__DIR__=E:php_spacech02
__NAMESPACE__=
评论
还没有评论。