php 敏捷开发框架 codeigniter pdf,PHP 敏捷开发框架 CodeIgniter - 快速 Web 应用开发详解[CHM][PDF][源代码][24.50MB]...

内容简介

第一章讲解了 CodeIgniter 能做什么?什么是“框架”?如何安装

CodeIgniter?还对开源商业模式进行了深层次讨论,并在结尾给出了 CodeIgniter 的一些不足。

第二章讲解了安装 CodeIgniter 会发生什么?会自动创建哪些文件?本章给出了安装 CodeIgniter

所需软件的详细说明,并讲解了如何对 CodeIgniter 进行基本的配置。

第三章讲解了 MVC 如何帮助组织一个动态网站。本章更详细的阐述了当 CodeIgniter 收到 Internet

请求后,通过分析该请求并解析相关程序来执行的过程。然后介绍 CodeIgniter 的语法规则,并对 CodeIgniter

网站上你能找到的(或自己编写的)各种不同类型的文件或类进行了详细的解释。在本章的结尾部分,会告诉大家一些在网站设计中极具实用性的技巧和提示。

第四章讲述了如何设置一个数据库来配合 CodeIgniter 的使用,还有如何使用 Active Record 类来操作数据库。

第五章涵盖了创建视图的各种方法,如何快速创建 HTML 表单,如何使用 CodeIgniter 的验证类验证你的表单。

第六章讲述了一个对任何网站都有影响的基础问题,即 Session 管理和安全;同时我们也来探讨一下 CodeIgniter 的

Session 类。

第七章涵盖了 CodeIgniter 使用对象的方式,以及你能够以各种不同的方式编写和使用你自己的对象。

第八章涵盖了 CodeIgniter 中用于测试的类:单元测试、基准测试和“分析器”,通过这些方法,CodeIgniter

可以帮你在不影响当前数据的情况下测试数据库。

第九章讲述了通过使用 CodeIgniter 的 FTP 类和 Email 类来简化通讯,并使用 XML-RPC 从 Web 2.0

的世界中获取信息。

第十章讨论了一些能帮你解决建站常见问题的 CodeIgniter 类和类库,例如:日期辅助函数、文本和 Inflector

辅助函数、语言类和表格类。

第十一章讲述了一些有用的 CodeIgniter 功能和辅助函数:文件辅助函数、下载辅助函数、文件上传类、图像处理类和 ZIP

类。

第十二章涵盖了探索你的 config 文件、使用诊断工具、服务器之间的潜在区别和一些与安全相关的提示。

第十三章告诉你如何使 CRUD 操作一般化,你可以用两个类来实现:一个用于控制器,另一个用于 CRUD 模型。

第十四章讨论了一些代码范例,这些范例综合使用了之前章节中逐步讨论的功能。

第十五章介绍了一些在你编写 CodeIgniter 程序时会用到的资源,例如:AJAX 和 JavaScript 类库、身份验证、图表和

CRUD。

目录

译序

前言

第一章 对 CodeIgniter 的介绍

1.1.1 节省时间

1.1.2 使你的网站更健壮

1.1.3 增强你的代码

1.1.2.1 确保你的链接自动更新

1.1.2.2 防止对数据库的攻击:对表单输入的数据进行校验和处理

1.1.3.1 发送 Email 和附件很简单

1.1.3.2 压缩用户要下载的文件以加快下载速度

1.1 CodeIgniter 能为你做什么?

1.2 CodeIgniter 是什么?框架又是什么?

1.3 关于开发者

1.4 “开源”商业模式

1.5 CI 不能做什么

1.6 许可协议

1.7 总结

第二章 2 分钟:建立一个 CodeIgniter 网站

2.1 准备知识

2.2 安装 CodeIgniter

2.3 分析文件结构

2.4 配置文件

2.5 它能工作吗?

2.6 总结

第三章 分析网站结构

3.8.1 调用视图

3.8.2 直接地调用函数

3.8.3 与控制器互动

3.8.4 这就像一个鸡蛋杯

3.8.5 一个 CI 辅助函数的例子:URL 辅助函数

3.8.6 一个简单的类库例子:创建一个菜单

3.7.1 把参数传给一个函数

3.7.2 传递数据到视图

3.3.1 控制器

3.3.2 视图

3.2.1 Welcome 控制器

3.2.2 让视图开始工作

3.2.3 默认控制器

3.1 MVC—到底有什么用?

3.2 CI 的网站结构:控制器和视图

3.3 CodeIgniter 语法规则

3.4 CI 网站上的文件或类的类型

3.5 这些文件夹的含义?

3.6 设计一个较好的视图

3.7 设计一个较好的控制器

3.8 CI 中的类彼此之间如何操控

3.9 总结

第四章 使用 CI 简化数据库开发

4.3.1 使用 Active Record 类的优点

4.3.2 “读取”查询

4.3.3 显示查询结果

4.3.4 “创建”和“更新”查询

4.3.5 “删除”查询

4.3.6 Active Record 和传统 SQL 编程的结合

4.3.1.1 节省时间

4.3.1.2 自动机制

4.1 配置设置

4.2 为我们的网站设计数据库

4.3 Active Record

4.4 总结

4.5 附录:使用 MYSQL 查询语句创建“websites”数据库

第五章 简化 HTML 页面和表单的设计

5.7.1 设置验证规则

5.7.2 设置控制器

5.7.3 设置表单

5.5.1 使用表单辅助函数的好处之一:清楚

5.5.2 使用表单辅助函数的好处之二:自动化

5.1 编写视图

5.2 PHP 语法的长格式和短格式

5.3 嵌套视图

5.4 网站架构的现实问题

5.5 CI 的表单辅助函数:输入数据

5.6 我的“Display”模型

5.7 CI 的验证类:方便地检验数据

5.8 总结

第六章 简化使用 Session 和安全

6.3.1 使 Session 更安全

6.1 开始用 CI 设计一个实际的网站

6.2 关于网站

6.3 安全/Session:使用另一个 CI 类库

6.4 安全

6.5 总结

第七章 CodeIgniter 和对象

7.1.1 CI“超级对象”的工作原理

7.1.2 引用复制

7.1 面向对象编程

7.2 在 CI“超级对象”中加入你自己的代码

7.3 CI“超级对象”的问题

7.4 总结

第八章 用 CI 测试你的代码

8.3.1 什么时候使用单元测试

8.3.2 单元测试的示例

8.1 为什么测试,为谁测试?

8.2 CI 的错误处理类

8.3 CI 的单元测试类

8.4 CI 的基准测试类

8.5 CI 的评测器类

8.6 用“模拟”数据库来做测试

8.7 控制和时间安排

8.8 总结

第九章 用 CI 通信

9.2.1 使 XML-RPC 的服务器与客户端交互

9.2.2 格式化 XML-RPC 数据交换

9.2.3 调试

9.2.4 XML-RPC 带来的问题?

9.1 使用 FTP 类测试远程文件

9.2 机器之间的对话—XML-RPC

9.3 与人交流的工具:Email 类

9.4 总结

第十章 CI 如何帮助提供动态的数据

10.1 日期辅助函数:转换和本地化日期

10.2 使用文本和 Inflector 辅助函数

10.3 国际化:语言类

10.4 编写 HTML 表格的好方法:表格类

10.5 缓存网页

10.6 总结

第十一章 使用 CI 处理文件和图片

11.1 文件辅助函数

11.2 下载辅助函数

11.3 文件上传类

11.4 CI 的图像类

11.5 用 CI Zip 类压缩文件很容易

11.6 总结

第十二章 产品版本、升级和重大决定

12.3.1 如何装载模型,以及如何调用它们

12.3.2 如何初始化你自己的类库

12.2.1 诊断工具

12.1.1 URL

12.1.2 数据库

12.1.3 其它 config 文件

12.1 连接:检查 Config 文件

12.2 找出 PHP 4/5 和操作系统间的差异

12.3 应对 CI 新版本带来的变化

12.4 如果有了新版 CI,我需要更新吗?

12.5 如何修改 CI 的基础类

12.6 总结

第十三章 快捷的 CRUD 及其配合使用

13.5.1 Showall 函数

13.5.2 Insert 函数

13.5.3 Insert2 函数

13.5.4 测试套件

13.5.1.1 读取数据

13.5.1.2 Delete 和 Trydelete 函数

13.1 CRUD 模型:设计原理

13.2 标准的控制器格式

13.3 数据库表

13.4 模型的心脏:数组

13.5 CRUD 模型

13.6 总结

第十四章 审视 CI

14.3.1 完整性

14.3.2 易用性

14.2.1 CI 能提供帮助的地方:结构

14.2.2 CI 能提供帮助的地方:简化

14.2.3 CI 能提供帮助的地方:额外功能

14.1 一些代码:“do_test”模型

14.2 一个平衡表

14.3 CI 的问题

14.4 总结

第十五章 资源和扩展

15.2.1 可用的插件和类库

15.2.2 AJAX/Javascript

15.2.3 身份验证

15.2.4 外部网站

15.2.5 比较:使用哪个图表类库?

15.2.6 CRUD:新领域

15.2.7 其它编程资源,例如 Xampplite、MySQL 和 PHP

15.1 CI 的用户论坛

15.2 视频教程

15.3 总结

文档截图

a78aa9d17ca151cfccf138ec678e7d8a.png

压缩包里有两个文件: 1、CodeIgniter:php敏捷开发框架 2、CodeIgniter 1.7.1 用户指南 本书详细讲解了 CI 的一些主要特性。本书并不包含 CI 的所有内容和全部细节。CI 有一本出色的在线《用户指南》,它详细讲解了大多数的内容。它可以与 CI 一起下载。 本书并不想重复《用户指南》中的内容。相反,本书试图让你轻松了解 CI 框架是如何工作的,那么,你可以先决定它是否对你有价值,然后再阅读本书。 在试图解释 CI 是如何工作时,本书的某些内容已经超出了《用户指南》的范围。(《用户指南》更注重实际应用。)这意味着在“实战训练”中有一些非常理论化的章节。我发现这有助于理解 CI 内部的运行机制;否则,当你遇到令人费解的错误消息时就不容易解决。 我尝试在展示 CI 代码段时使用一个“真实世界”的例子。我想展示的是,CI 可以用于开发一个正式的网站。目前,我手头上有几个正在运行的客户网站,我希望依照我指定的方式去对其进行检测控制以及测试,同时记录下程序操作行为,在我需要时我可以得到一份相关的报告。 本书中的范例无法将 CI 的功能一丝不漏的完全展示,但我想这些范例应当还是在一定程度上展现了 CI 在简化处理常用应用(以及一些非常用应用)上的能力。 本书系统地讲解了 CodeIgniter 的主要特性,并配合相应的代码范例进行了详尽的解释,使你能够由浅入深地掌握 CodeIgniter
大多数PHPer都想写出运行状态良好的应用程序,而且希望尽可能做得简单且不费事。这篇文章是有关 CodeIgniter 的(以下简称 CI),CI 是一个达成以上目标的框架。 如果你只是要达成一个最终的结果,而把中间所有的编码细节和复杂统统丢给一个框架,CI 是你最好的朋友。 CI 有很多优点:免费,轻量级,容易安装,它能使你的编程生涯变得很轻松。 这一章我们会告诉你: CI 能为你做什么? 什么是“框架”?CI 为什么能被称为框架? “开源”商业模式。 CI 的某些不足(是的,它并不完美)。 1.1 CodeIgniter 能为你做什么? 如果你已经是一位 PHPer,开发过 PHP 应用,CodeIgniter 将会帮助你做得更好,更容易达成目标。CI 会减少你的代码量。你的脚本可读性也会更好,更容易升级。它会使你的网站结构更紧凑,代码更强健,如果没有很好地研究 CI 的源代码,你可能还无法察觉到它的强健。 对大多数兄弟来讲,你可能已经花了不少时间,系统地学习了 PHP、HTML 和 CSS,当然还有 MySQL 什么的,不过如果使用 CI,你只需要一些基本的 LAMP(WAMP)知识,你没有必要先成为一个专家才能使用 CI。你完全可以先借助于 CI 或别的什么框架软件,成为一个有生产力的 PHP 程序员,拿着高薪然后优雅地进一步学习 PHP 的中高级知识,直至成为一位真正的 PHP 骨灰级的人物。 下述情形,你最好不要使用CI: 你没有一点PHP和HTML的基本知识。 你想用最少的代码,快速简便的写一个基本的内容管理系统(CMS)(可以看看Expression Engine)。 你想写一个只有几个标准特性的简单的网站。 1.1.1 节省时间 CI 学习周期短,见效快。让我们试着评估一下相关的要素: CI 如何减少代码量? 你真的可以减少很多工作量:敲击键盘的次数减少了,代码错误减少了,你只需要很少的时间调试代码。代码量减少还意味着你只需要较少的空间来存放应用程序。 举两个例子(稍后它们会被进一步分析,因此不用担心如何了解它们的工作原理!) 想象你正在写一个 MySQL 数据库查询。可能的代码如下: 复制代码到剪贴板PHP 代码$connection = mysql_connect("localhost","fred","12345"); mysql_select_db("websites", $connection); $result = mysql_query ("SELECT * FROM sites", $connection); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { foreach ($row as $attribute) print "{$attribute[1]} "; }现在看看 CI 如何处理同一个问题: 复制代码到剪贴板PHP 代码$this->load->database('websites'); $query = $this->db->get('sites'); foreach ($query->result() as $row) { print $row->url; }比较字符数:前者 336,后者 112。 第二个例子,现在让我们想象你正在用 HTML 写一个数据输入窗口,你想要一个下拉输入框。下拉框中有三个选项。代码如下: 复制代码到剪贴板HTML 代码<select name="type"> <option value="1">www.this.com</option> <option value="2">www.that.com</option> <option value="3" selected>www.theother.com</option> </select>CI 的写法和前例一样,因为它把相关内容放入一个数组,更容易由 PHP 进行处理: 复制代码到剪贴板PHP 代码$urlarray = array( '1' => 'www.this.com', '2' => 'www.that.com', '3' => 'www.theother.com', ); $variable .= form_dropdown('url', $urlarray, '3');在 HTML 中,你需要输入 154 个字符;在 CI 中,只需要 128 个字符。 1.1.2 使你的网站更健壮 你不需要写很多代码,是因为 CI 提供了许多标准的功能,这些经过仔细推敲的框架内的代码,对安全性和输入进行了有效的校验和考虑。初学者往往没有足够的能力全面兼顾功能和安全。(这也是中高级程序员与新手之间能力差异的一个方面) 1.1.2.1 确保你的链接自动更新 设想你正在编写一个菜单页面,有许多超链接可重定向到其他页面。他们全部以传统的 HTML 格式编写: 复制代码到剪贴板HTML 代码<a href="http://www.mysite.com/index.php/start/hello/fred">say hello to Fred</a>后来,你决定转移网站到其他 URL。这意谓你必须仔细地去查找并修改代码中的每一处 URL,否则它们将无法正常工作。 CI 给你一个简单的函数,可以这样编写超链接: 复制代码到剪贴板PHP 代码echo anchor('start/hello/fred', 'Say hello to Fred');CI 推荐你把你的 URL 放入一个配置文件中供你的脚本读取。CI 的 anchor 函数会自动从配置文件中提取相关 URL。因此,当你修改一个 URL 时,你只需要修改配置文件中的对应链接,然后所有超链接将自动更新。 1.1.2.2 防止对数据库的攻击:对表单输入的数据进行校验和处理 数据输入可能引发许多问题。因为 HTML 和数据库的限制,数据中总包含特定的符号—举例来说,省略符号和引号—可能导致你的数据库遭到攻击,最终得到你无法预料的结果。 解决方案是在把这些数据存入数据库前对这些数据进行相关处理。这样做会浪费一些系统时间,增加一些额外编码。 CI 的表单辅助函数会自动地完成这些工作。因此,当你编写一个输入框时: 复制代码到剪贴板PHP 代码echo form_input('username', 'johndoe');CI 也隐式地执行下列校验函数: 复制代码到剪贴板PHP 代码function form_prep($str = '') { if ($str === '') { return ''; } $temp = '__TEMP_AMPERSANDS__'; // Replace entities to temporary markers so that // htmlspecialchars won't mess them up $str = preg_replace("/&#(\d+);/", "$temp\\1;", $str); $str = preg_replace("/&(\w+);/", "$temp\\1;", $str); $str = htmlspecialchars($str); // In case htmlspecialchars misses these. $str = str_replace(array("'", '"'), array("'", """), $str); // Decode the temp markers back to entities $str = preg_replace("/$temp(\d+);/","&#\\1;",$str); $str = preg_replace("/$temp(\w+);/","&\\1;",$str); return $str; }上述函数捕获像“&”这样的特殊字符,以便在你的页面提交时不会造成混乱。你应该知道,有些字符会引起问题。 并不是所有的用户都会中规中矩的输入符合要求的信息,你也不可能知道使用浏览器输入信息的是什么人,他们在想什么,做什么。你可以使用 CI 来防止输入不符合要求的信息。当然,你大可不必知道 CI 是如何在幕后为你做到这一切的,你只需要简单地输入如下代码: 复制代码到剪贴板PHP 代码echo form_input('username', 'johndoe');1.1.3 增强你的代码 CI 使你写代码更容易了。不像有些类库如 PEAR 等,集成比较困难,(有时候你会找不到支持 PEAR 的空间),CI 很容易集成,只要把它放入一个目录,它就能很好地工作。CI 所有代码的可读性好,也很健壮,推出前经过社区用户的认真测试,所以在你可以使用时,这些代码已经经历了很多考验。 让我们看两个例子。 1.1.3.1 发送 Email 和附件很简单 发送 Email 的功能实现起来比较复杂,但是,使用 CI 将使这件事变得很简单: 复制代码到剪贴板PHP 代码$this->load->library('email'); $this->email->from('your@your-site.com', 'Your Name'); $this->email->subject('Email Test'); $this->email->message('Testing the email class.'); $this->email->send();实现发送 Email 的功能中有一些不容易解决的技术问题:比如设置文本自动换行(取消设置的话则可以保持长 URL 地址不被换行或截断)或发送附件。标准的 PHP 实现起来比较复杂,CI 简化了这些工作,它的 Email 类使得发送附件很简单: 复制代码到剪贴板PHP 代码$this->email->attach('/path/to/photo1.jpg');CI 把内部的复杂部分悄悄地完成了,举例来说,实现了列举近百种不同附件的 MIME 类型的功能。所以它知道你的相片 photo1.jpg 是一个“image/jpeg”MIME 类型。因此它在你附件的适当位置填写必要的限制符号,它处理文本的换行,让你轻松标记出不希望出现换行的文本块。 1.1.3.2 压缩用户要下载的文件以加快下载速度 为了加快下载速度,常见的做法是在下载之前压缩下载文件。你可能不知道如何处理。但 CI 可以方便地让你用 4 行代码完成此功能: 复制代码到剪贴板PHP 代码$name = 'mydata1.txt'; $data = 'the contents of my file..........'; $this->zip->add_data($name, $data); $this->zip->archive('c:/my_backup.zip');运行这些代码,你会在你的 C 盘根目录下找到一个压缩文件,解压后即为原始文件。 你网站的用户并不清楚你是如何简便实现这个功能的,但他们能体会到你的网站的下载速度很快,而你只用了数分种(而不是数小时)就实现了这个功能。 1.2 CodeIgniter 是什么?框架又是什么? 当发明计算机编程不久之后,便有人发现,这其中涉及到了太多的重复操作。之后,也许是 Ada Lovelace(人类历史上的首位程序员),又或许是 Alan Turning,决定将计算机程序模块化,从而使得片段程序代码可以重复使用。PHP 程序员们早已习惯了将需要重复使用的代码写在函数中,并将这些函数放在 include 文件里。 同样的,框架是为重用而发明的,存放在独立的文件中,用来简化重复操作的代码。 上面例子中连接数据库和编写 HTML 表单元素的工作都可以调用相关的 CI 函数来进行简化。 它超越了这一点。有很多种方法实现同样的功能;大多数的框架会让你按照它实现的方法来做。他们选择了一种方式来解决问题,所以你也必须要遵循这种方式。如果方式得当,编程便会轻松许多,反之则会事倍功半。 好的框架设计能实现需要的功能,而且尽可能地不互相牵连。一个好框架为你做出各种功能的实现,并且给你提供一步一步的编程指导。 提到框架时,就不能不提到著名的框架:Ruby on Rails。 Rails 做得相当成功,因为它籍由最少量的编码,提供简便快速的网站开发。本质上,它是一个结构和一组工具,专为使用 Ruby 语言的用户开发,允许你快速建立 Ruby 系统原型。它不是 Ruby 语言中唯一的框架,但它一定是最有开发效率和最有名的。另一方面,如果你已经花了很大功夫学习 PHP 的话,那么从 Ruby 重新开始又要重头学起。 为 PHP 开发的框架有很多个(大约 40 个),CI 只是其中之一。其它的还包括 Zend Framework、Cake、Trax 等。下列网址可以找到一个针对十种框架的简明图表分析:http://www.phpit.net/article/ten-different-php-frameworks/。 如果你访问上述网址中相关产品的官方网站,你将会注意到,每个论坛都有一个共同的热点,就是到底哪一个框架是最好的?事实似乎是每个都有它的长处,而且又都有自己的弱点。我的评估标准是:我很忙;因此框架应该节省我的时间,从中选择一个后,就坚持使用下去,因此就有了这本介绍 CI 的书。
本书详细讲解了 CI 的一些主要特性。本书并不包含 CI 的所有内容和全部细节。CI 有一本出色的在线《用户指南》,它详细讲解了大多数的内容。它可以与 CI 一起下载。 本书并不想重复《用户指南》中的内容。相反,本书试图让你轻松了解 CI 框架是如何工作的,那么,你可以先决定它是否对你有价值,然后再阅读本书。 在试图解释 CI 是如何工作时,本书的某些内容已经超出了《用户指南》的范围。(《用户指南》更注重实际应用。)这意味着在“实战训练”中有一些非常理论化的章节。我发现这有助于理解 CI 内部的运行机制;否则,当你遇到令人费解的错误消息时就不容易解决。 我尝试在展示 CI 代码段时使用一个“真实世界”的例子。我想展示的是,CI 可以用于开发一个正式的网站。目前,我手头上有几个正在运行的客户网站,我希望依照我指定的方式去对其进行检测控制以及测试,同时记录下程序操作行为,在我需要时我可以得到一份相关的报告。 本书中的范例无法将 CI 的功能一丝不漏的完全展示,但我想这些范例应当还是在一定程度上展现了 CI 在简化处理常用应用(以及一些非常用应用)上的能力。 本书系统地讲解了 CodeIgniter 的主要特性,并配合相应的代码范例进行了详尽的解释,使你能够由浅入深地掌握 CodeIgniter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值