新書推薦:
《
旷野人生:吉姆·罗杰斯的全球投资探险
》
售價:HK$
75.9
《
笼中王国 : 18世纪法国的珍禽异兽与社会文化
》
售價:HK$
74.8
《
思考的框架3:风靡华尔街的思维训练法
》
售價:HK$
64.9
《
被记忆的西周史(中山大学中珠学术译丛)
》
售價:HK$
151.8
《
森林疗法:拥抱大自然、获得幸福的季节性方法
》
售價:HK$
74.8
《
希腊人(伊恩·莫里斯文明史系列)
》
售價:HK$
185.9
《
亚马逊六页纸 如何高效开会、写作、完成工作
》
售價:HK$
76.8
《
世界巨变:严复的角色(王中江著作系列)
》
售價:HK$
110.0
|
編輯推薦: |
(1)贴近实战,书中提供的示例、范例、实例基本囊括了PHP 的开发技术细节且大部分来自实践,读者完全可以在自己实际的开发环境中使用。同时又不乏对基础知识及实用技术的解析。
(2)既要照顾到初学者,又要满足自学者进阶、提高的需要。本书从开发的*基础讲起,然后是循序渐进的过程。在其他章节也提供了很多实用技术,PHP 挂接Oracle、PHP 缓存管理(memcache)的实现以及PHP 通过Sphinx 构建自己的搜索引擎等,在此就不一一列举了。
(3)每一个知识点都要给出至少一个以上的举例且必须经过实地测试通过后才能纳入书中,实例运行结果也要纳入书中。这样,确保书中的例子都是可行的,便于读者自己的测试结果与书中结果对照。
|
內容簡介: |
本书精炼而系统地讲述了PHP基础语法和基本操作,在此基础上侧重于PHP开发实践的阐述,例如PHP MVC程序设计、PHP错误与异常处理、PHP操作MySQL数据库等,旨在帮助Web开发初级读者系统快速地掌握PHP开发技能,积累实践开发经验。
|
關於作者: |
甘长春老师毕业于北京交通大学电气工程及自动化专业,目前供职于中国铁路北京局集团公司。自从参加工作以来,先后参与了多个铁路应用项目的开发工作,同时也与多家IT企业合作研发数据库架构设计及开发项目。通过这些项目的开发,积累了一定的实践经验,并从中获取了一些数据库开发运维的心得。除此之外,自2014年起,甘长春老师一直在天津大学软件学院从事兼职教学工作,所授课程为Oracle和PHP,教学经验的积累也让他更清晰地明白了如何把一个知识点讲解更清楚,力求引领读者尽快掌握书中所讲内容。
|
目錄:
|
第1章 PHP基本语法
1.1 PHP的优势与特点 ............................................................................................1
1.2 PHP脚本运行方式 ............................................................................................2
1.3 集成化WAMP服务器的配置 ..........................................................................3
1.3.1 WAMP环境配置 ................................................................................................4
1.3.2 客户端浏览器与服务器的互动过程 .................................................................8
1.3.3 Apache、MySQL、PHP三者之间的关系 ......................................................10
1.4 PHP语法所涉及的标记 ..................................................................................10
1.4.1 PHP的标记风格 ...............................................................................................10
1.4.2 PHP与HTML混编 .........................................................................................12
1.4.3 PHP脚本中的分号(;) ..........................................................................14
1.4.4 空格、换行符及跳格 .......................................................................................14
1.4.5 PHP中的注释规则及规范 ...............................................................................15
1.5 PHP数据类型 ..................................................................................................16
1.5.1 基本数据类型 ...................................................................................................16
1.5.2 复合数据类型 ...................................................................................................21
1.5.3 特殊数据类型 ...................................................................................................23
【示例1-1】判断变量是否为null空值并进一步处理 ............................................24
1.6 PHP数据类型转换 ..........................................................................................24
1.6.1 基本转换(自动转换) ...................................................................................25
1.6.2 强制转换 ...........................................................................................................25
【示例1-2】 将字符串强制转换为float单精度、int整型、bool布尔、数组
以及对象等数据类型 .............................................................................25
1.7 PHP常量与变量 ..............................................................................................27
1.7.1 定义常量 ...........................................................................................................27
【示例1-3】使用Define函数定义常量DEFAULT_PATH ...................................27
1.7.2 系统预定义常量 ...............................................................................................28
1.7.3 定义变量 ...........................................................................................................28
【示例1-4】传值赋值与引用赋值(传址赋值)方式的差异 .................................29
1.7.4 变量作用域 .......................................................................................................30
1.7.5 可变变量(嵌套变量) ...................................................................................31
1.8 PHP 运算符 ......................................................................................................33
1.8.1 赋值运算符 .......................................................................................................33
1.8.2 算术运算符 .......................................................................................................33
1.8.3 比较运算符 .......................................................................................................34
1.8.4 逻辑运算符 .......................................................................................................35
1.8.5 位运算符 ...........................................................................................................35
1.8.6 字符串连接运算符 ...........................................................................................36
1.8.7 错误控制运算符 ...............................................................................................36
1.8.8 三元运算符 ......................................................................................................36
1.8.9 运算符的优先级 ...............................................................................................37
1.9 PHP 流程控制语句 ..........................................................................................37
1.9.1 条件控制语句 ...................................................................................................38
1.9.2 循环控制语句 ...................................................................................................40
1.9.3 跳转控制语句 ...................................................................................................41
1.10 PHP 变量的应用场景分析 ............................................................................43
1.10.1 可变变量与应用场景 .....................................................................................43
1.10.2 PHP 变量引用(传址)赋值使用场景分析 .................................................46
1.10.3 PHP 外部超全局变量场景分析 .....................................................................48
1.10.4 PHP 预定义系统常量场景分析 .....................................................................51
1.10.5 PHP 变量检测与销毁(删除) .....................................................................52
【示例1-5】变量检测与销毁(删除) .....................................................................56
1.10.6 PHP 常量的定义与检测场景分析 .................................................................57
1.11 本章小结 ........................................................................................................59
第2 章 PHP 数组
2.1 数组的声明及类型 ..........................................................................................60
2.1.1 数组的声明 .......................................................................................................60
【示例2-1】数组的定义、赋值及取值 .....................................................................61
2.2.2 数组的类型 .......................................................................................................61
2.2 数组的构造 ......................................................................................................62
【示例2-2】二维数组使用 ................................................................................62
2.3 数组遍历方法 ..................................................................................................62
2.3.1 使用foreach 循环遍历数组 .............................................................................62
【示例2-3】使用foreach 遍历数组 ...........................................................................63
2.3.2 使用list 函数遍历数组 .................................................................................64
【示例2-4】使用list 函数遍历数组 .......................................................................64
2.4 数组常用操作 ..................................................................................................64
2.4.1 统计数组元素个数 ...........................................................................................64
【示例2-5】使用count 函数统计数组$arr1 和$arr2 的元素个数 ......................64
2.4.2 数组与字符串的转换 .......................................................................................66
【示例2-6】过滤敏感字 .............................................................................................66
【示例2-7】使用implode 函数将数组转换为字符串 ...........................................68
2.4.3 数组的查找 .......................................................................................................68
【示例2-8】在数组中查找元素的键名及键值 .........................................................68
2.4.4 数组的排序 .......................................................................................................69
【示例2-9】数组的升序与降序排列 .........................................................................69
【示例2-10】关联数组按键值及键名并保持键值对应关系 ...................................70
2.4.5 数组的拆分与合并 ...........................................................................................71
【示例2-11】数组元素的取出和替换 .......................................................................72
【示例2-12】两个或两个以上含有相同键与不同键的数组合并 ...........................73
2.4.6 数组键及键值的判断 .......................................................................................73
【示例2-13】判断数组键one1two及2是否存在 .......................73
【示例2-14】 通过array_key_exists 函数测试数组键是否存在,通过empty 和isset 测试数组键的键值是否存在 .................................74
2.4.7 数组元素的检索 ...............................................................................................75
【示例2-15】使用in_array 函数在数组array 中搜索指定的value 值 ................75
【示例2-16】 使用array_key_exists 函数判断某个数组array 中是否存在
指定的key(键) ................................................................................76
【示例2-17】 使用array_search 函数在数组中查找一个键值,若找到则
返回键名;如果未找到则返回false ..................................................76
2.4.8 数组元素的过滤 ...............................................................................................76
【示例2-18】 使用array_filter 函数过滤空数组,所有为false 的元素将会被移除 ...........................................................................................77
【示例2-19】使用array_filter 函数去掉多维空值,而数组的下标没有改变 ....77
【示例2-20】 使用foreach 语句及unset 函数去掉数组的空值,而数组的下标没有改变 .......................................................................................78
【示例2-21】 使用for 语句及unset 函数去掉数组的空值,而数组的下标没有改变 ...............................................................................................78
2.4.9 将数组分配到符号表 .......................................................................................79
【示例2-22】 使用关联数组,将键值CatDog和Horse赋值给变量$a1、$b1 和$c1 ..........................................................................80
【示例2-23】使用索引数组,变量名前缀为gcc .............................................80
2.4.10 PHP 数组的出栈与入栈 .................................................................................81
【示例2-24】 在给定一个数组的3 个元素中,移除最后一个元素(索引最大的元素)并返回这个被移除的元素值 .......................................81
2.5 PHP 预定义数组 ..............................................................................................83
2.5.1 $_SERVER[] 数组 ............................................................................................84
2.5.2 $GLOBALS[] 数组 ...........................................................................................86
【示例2-25】 函数内通过Global 声明全局变量与$GLOBALS[] 调用外部
变量 .......................................................................................................86
2.5.3 $_ENV[] 数组 ...................................................................................................87
2.6 本章小结 ..........................................................................................................88
第3 章 面向对象的程序开发
3.1 类和对象 ..........................................................................................................89
3.1.1 类和对象的定义 ...............................................................................................89
3.1.2 类的属性解释 ...................................................................................................90
3.1.3 PHP 的引用变量 ...............................................................................................91
3.1.4 类的方法 ...........................................................................................................92
【示例3-1】 在外部访问内部方法传参(实参)个数多于设定的
参数个数(形参) .................................................................................93
【示例3-2】 在外部访问内部方法传参(实参)个数多于设定的
参数个数(形参) .................................................................................93
3.1.5 构造方法 ...........................................................................................................94
【示例3-3】实例化类时设定参数值并由构造方法接收 .........................................94
3.1.6 析构函数与PHP 的垃圾回收机制 ..................................................................94
3.2 继承类 ..............................................................................................................95
3.2.1 怎样继承一个类 ...............................................................................................95
3.2.2 类的属性及方法修饰符的使用 .......................................................................97
3.2.3 类重写 ...............................................................................................................97
3.2.4 使用parent:: 关键字 .........................................................................................99
3.2.5 类方法重载 .....................................................................................................100
3.3 类特性 ............................................................................................................101
3.3.1 静态变量和方法 .............................................................................................101
3.3.2 final 类、final 方法和常量 .............................................................................106
3.3.3 abstract 类和abstract 方法 .............................................................................107
3.4 接口 ................................................................................................................108
3.5 PHP 5 中的魔术方法简介 .................................................................................110
3.5.1 __set 魔术方法 ................................................................................................110
3.5.2 __get 魔术方法 ...............................................................................................111
3.5.3 __call 魔术方法 ..............................................................................................111
3.5.4 __toString 魔术方法 .......................................................................................112
3.6 PHP 魔术变量、魔术方法、常规函数以及回调函数的使用 .................... 113
3.6.1 PHP 魔术变量 .................................................................................................113
【示例3-4】PHP 命名空间的使用 ..........................................................................116
3.6.2 PHP 魔术方法使用 .........................................................................................117
3.6.3 PHP 典型函数的使用 .....................................................................................123
3.6.4 PHP 函数检测与回调综合运用 .....................................................................128
3.7 本章小结 ........................................................................................................132
第4 章 PHP MVC 程序设计
4.1 MVC 三大核心部件 ......................................................................................133
4.1.1 数据和规则:模型 .........................................................................................134
4.1.2 交互界面:视图 .............................................................................................134
4.1.3 调用返回:控制器 .........................................................................................134
4.1.4 MVC 优缺点 ...................................................................................................134
4.2 PHP 模板引擎Smarty 概述 ..........................................................................135
4.2.1 什么是模板引擎 .............................................................................................135
4.2.2 Smarty 的优缺点 ............................................................................................136
4.3 Smarty 的部署与配置 ....................................................................................137
4.3.1 Smarty 的部署 ................................................................................................138
4.3.2 Smarty 的配置 ................................................................................................139
4.3.3 实践案例:替代模板文件中特定的Smarty 变量 .......................................140
4.4 Smarty 的使用步骤 ........................................................................................143
4.5 Smarty 变量 ....................................................................................................144
4.5.1 模板中输出PHP 分配的变量 ........................................................................144
【示例4-1】使用section 对多维数组进行列表输出,数据源来自定义 .............146
【示例4-2】 使用section 对多维数组进行列表输出,数据源来自数据库检索并分页显示 ...................................................................................147
4.5.2 模板中输出非PHP 分配的变量 ....................................................................152
4.5.3 变量调节器 .....................................................................................................153
4.6 Smarty 流程控制 ............................................................................................158
4.6.1 条件选择结构if-else ......................................................................................158
4.6.2 Smarty 中与数组下标无关的foreach 循环结构 ..........................................159
4.6.3 Smarty 中与数组下标有关的section 循环结构 ...........................................163
4.7 Smarty 的缓存处理 ........................................................................................167
4.7.1 在Smarty 中控制缓存 ...................................................................................167
4.7.2 一个页面多个缓存 .........................................................................................169
4.7.3 为缓存实例消除处理开销 .............................................................................169
4.7.4 清除缓存 .........................................................................................................170
4.7.5 关闭局部缓存 .................................................................................................171
4.8 本章小结 ........................................................................................................172
第5 章 PHP 错误与异常处理
5.1 PHP 的错误处理机制 ....................................................................................174
5.2 自定义错误处理 ............................................................................................176
【示例5-1】 通过trigger error 函数触发自定义处理函数,但不隐蔽真实
错误路径信息 .......................................................................................177
【示例5-2】 通过trigger error 函数触发自定义处理函数并隐蔽真实错误
路径信息 ...............................................................................................178
5.3 PHP 的异常处理 ............................................................................................179
5.3.1 异常的抛出与捕获 .........................................................................................179
【示例5-3】 异常被抛出但未被捕获,也未指定set_exception_handler 函数做相应的处理 .......................................................................................179
【示例5-4】 异常被抛出未被捕获,但通过指定set_exception_handler 函数做相应的处理 .......................................................................................180
【示例5-5】 异常被抛出并被捕获且处理,不需要指定set_exception_handler函数做相应的处理 ...............................................................................180
5.3.2 基本异常(Exception)类介绍 .....................................................................181
5.3.3 自定义异常 .....................................................................................................181
【示例5-6】 判断非法Email,即如果Email 非法则抛出异常并处理,最后输出处理后的异常信息 .......................................................................182
5.3.4 捕获多个异常 .................................................................................................182
【示例5-7】通过接收多个异常来判断Email 是否合法 .......................................182
5.4 本章小结 ........................................................................................................183
第6 章 PHP 操作MySQL 数据库
6.1 PHP 操作MySQL 数据库的基本操作 .........................................................184
6.1.1 连接MySQL 服务器 ......................................................................................187
6.1.2 选择MySQL 数据库 ......................................................................................189
【示例6-1】连接MySQL 数据库服务器后选择要访问的数据库 ........................189
6.1.3 执行SQL 语句 ...............................................................................................190
【示例6-2】 执行insert(插入)、update(更新)及select(查询)SQL 语句示例 ......................................................................................190
6.1.4 关闭MySQL 数据库服务器的连接 ..............................................................191
6.1.5 处理查询结果集 .............................................................................................192
【示例6-3】执行查询,获取结果集行数 ...............................................................192
【示例6-4】 通过获取结果集中的一条记录作为枚举数组逐行获取结果集记录并输出 ...........................................................................................193
【示例6-5】 通过获取结果集看的一条记录作为关联数组逐行显示查询结果记录 ...............................................................................................194
【示例6-6】通过获取结果集中的一条记录作为对象逐行显示查询结果记录 .................196
【示例6-7】 通过获取结果集中的一条记录作为关联和枚举数组逐行显示查询结果记录 .......................................................................................197
6.2 获取数据库信息 ............................................................................................198
6.2.1 获取服务器所有数据库 .................................................................................198
【示例6-8】获取当前MySQL 服务器上的所有数据库 ........................................198
6.2.2 获取数据库内的表 .........................................................................................199
【示例6-9】获取jiaowglxt 数据库内的所有表 ......................................................199
6.2.3 获取数据表的字段信息 .................................................................................200
【示例6-10】获取数据表cms_ykxt_bmb2 列的相关信息 ....................................200
6.2.4 获取错误信息 .................................................................................................203
6.3 实践案例:实现一个留言板的简单管理 ....................................................203
6.3.1 添加留言信息 .................................................................................................203
6.3.2 分页显示留言信息 .........................................................................................206
6.3.3 查询单条留言详细信息 .................................................................................209
6.3.4 编辑留言信息 .................................................................................................210
6.3.5 删除留言信息 .................................................................................................212
6.3.6 案例部分截图 .................................................................................................212
6.4 PHP 获取MySQL 数据库存储程序的输出(out)参数值 ........................214
6.4.1 PHP(PDO 驱动)获取MySQL 存储过程的out 参数值 ..........................215
6.4.2 PHP(PDO 驱动)获取MySQL 数据库存储函数的返回值 ......................216
6.4.3 PHP(mysqli 驱动)获取MySQL 存储过程的out 参数值 ........................217
6.4.4 PHP(mysqli 驱动)获取MySQL 存储函数的返回值 ...............................218
6.5 本章小结 ........................................................................................................219
|
內容試閱:
|
■ 谁更适合Web开发
要说Web开发语言,数不胜数,CGI、PERL、RUBY所代表的脚本语言,PHP、Java、.NET所代表的类C语言,ASP所代表的Basic语言等。经过这么多年互联网应用中的大浪淘沙,当前主流的也就属PHP、Java、.NET三大阵营了。
在PHP、Java、.NET这三者中,Java更适合企业级应用(开发成本高昂、业务逻辑复杂,比如类似银行系统的应用等),而PHP在Web应用前景将超越Java及.NET,一方面它们都可以跨平台部署,另一方面PHP比起.NET更轻巧和简装。一个PHP安装包,加上Apache,也就几十兆;Java更是只需JDK和APPSERVER即,一共也就一二百兆,还可以自由选择APPSERVER。相比而言,.NET安装包动辙上G,且只能部署在Windows环境,需要.NET framework的支持。
为什么PHP比Java更合适Web应用呢?一方面,Web应用要求更丰富的客户体验、更快捷的客户响应;另一方面要求更低的开发门槛和开发成本。由于Java基于万能的原因而显得庞大、臃肿,其开发框架相对PHP增加了使用难度,其灵活性也不如PHP。PHP也有两个不足:
一是缺乏IDE支持,无法重构与测试。
二是处理不同数据库的语句各不相同,在更换数据库时需要修改大量的代码(到目前为止,PHP本身仍然无法对MySQL使用事务操作,但PHP所支持的第三方PDO可以)。而Java则可以通过封装数据库操作来解决,PHP目前还没有好的解决办法。尽管如此,作为一门快速开发语言,在Web开发上,PHP还是有着相当大的优势及潜力的,如果出现一个类似Rails的框架并解决跨数据库的问题,那么更是如虎添翼。目前已经出现的PHP For Rails,如 CodeIgniter(CI)、Yii、ThinkPHP(TP)等各有千秋,都很优秀,这将是Web开发的福音。PHP既然在Web开发方面有其独特的优势,也拥有一个庞大的开发群体,通过本书可以让PHP的爱好者、初学者、进阶者找到适合自己的良师益友,为职业生涯打下坚实的基础。
■ 写作宗旨
(1)贴近实战,书中提供的示例、范例、实例基本囊括了PHP 的开发技术细节且大部分来自实践,读者完全可以在自己实际的开发环境中使用。同时又不乏对基础知识及实用技术的解析。
(2)既要照顾到初学者,又要满足自学者进阶、提高的需要。本书从开发的最基础讲起,然后是循序渐进的过程。在其他章节也提供了很多实用技术,PHP 挂接Oracle、PHP 缓存管理(memcache)的实现以及PHP 通过Sphinx 构建自己的搜索引擎等,在此就不一一列举了。
(3)每一个知识点都要给出至少一个以上的举例且必须经过实地测试通过后才能纳入书中,实例运行结果也要纳入书中。这样,确保书中的例子都是可行的,便于读者自己的测试结果与书中结果对照。
■ 读者对象
本书力求结构紧凑、文风简练,对于具有较浅开发经验的入门级Web 开发人员较有帮助,可帮助其系统掌握PHP 开发技能,并对PHP 关联技术从实践角度进行学习应用,提升整体项目落地能力。
■ 配套资源下载包
为了让读者切实学习好本书,随书提供下列配套资料。
(1)书中示例或综合实例源代码。下载包源代码的代码号与书中的代码号是一一对应的;这样就省去了读者敲写的麻烦,通过复制粘贴操作就可在自己的环境下执行了。
(2)书中图表展示案例源代码,图表中的数据来自数据库,因此图表的形态变化将依赖数据库数据的变化。也就是说该图表是动态的,效果可堪比股市K 线图。往往大多应用都存在图表展示的需求,如果读者的系统有此需求,那通过这个案例,读者可以借鉴其中的技术和做法并运用于自己的系统中,这也是本书提供此案例的初心。
(3)本书附录
? 附录1 使用PHP 开发图表案例
? 附录2 PHP 实用技术
? 附录3 Sphinx.conf 配置文件注释
(4)PHP 对Excel 文件的各种读写操作,基本囊括了人工模式下对Excel 表格的各种
操作。
■ 致谢
写作和出版过程中得到了编辑老师的悉心帮助,借此向中国铁道出版社有限公司表示
感谢!
面对当今信息科技的日新月异,笔者也深感才疏学浅,难免有疏漏和不足的地方,敬请读者朋友批评指正。
■ 关于示例代码运行的说明
示例代码需运行在Apache 的服务模式下,将示例代码做成PHP 文件,其文件名形如xxxx.php,放在WWW(网站根目录)下,在浏览器地址中输入http:localhostxxxx.php 即可运行。
|
|