PHP课程 - 第13课 - 面向对象编程(OOP)基础
在之前的课程中,我们已经学习过 PHP 的几种数据类型:布尔型、整型、浮点型、字符串和数组。在本课中,我们将了解 PHP 中另一种非常重要的数据类型 —— 对象(object)。
对象在某种程度上类似于数组,因为对象中也可以包含不同类型的数据,比如数字、文本、数组,甚至其他对象。
对象就像数组一样可以包含各种数据,这些数据称为对象的 属性(properties)。同时,对象还可以包含函数,这些函数称为 方法(methods)。
不过,对象与数组有两个显著的区别:
1. 对象可以包含方法。
方法是以对象的名义调用的函数。将函数绑定到对象,使得对象不仅可以存储数据,还可以定义能够对这些数据执行的操作。
2. 对象是从类创建的。
在创建对象之前,我们必须先定义一个 类(class)。类中描述了对象将拥有的属性和方法。这样我们就能明确对象的结构,清楚对象应该保存哪些数据以及可以执行哪些操作。当我们通过类创建对象时,可以在创建时为对象赋予初始值,这样新生成的对象就不是空的。
PHP课程 - 第2部分 - 表单、文件、会话与安全性
如果你已经学习了 PHP 教程的第一部分,那么你至少已经掌握了 PHP 的基本编写方法。在这一部分中,我们将更深入地学习语言的各个方面,主要包括:
- PHP 表单操作
- PHP 文件操作
- PHP Cookies
- PHP 会话(Sessions)
- 邮件处理(Email)
- PHP 安全性
不过,我们不会像传统教材那样分别单独学习每一项功能。相反,我们将把这些知识综合运用起来,创建一个小型的网站项目。不过我要提前说明,这个网站并非为实际使用而设计,它的主要目的在于教学与练习。如果你想搭建真正的网站,建议使用现成的 CMS 或框架。
那么,一如既往,我们将从简单的内容开始,逐步过渡到更复杂的主题。
PHP课程 - 第1课 - 表单操作
在日常生活中,我们通过电视、广播、互联网或面对面的交流来获取信息。网站也需要从用户那里获取信息,但它们通过一种特殊的方式来实现——表单。表单可以类比为问卷调查或官方申请表。虽然表单的元素类型有限,但它们能让网站收集到所有必要的信息以完成交互。
为了更好地理解本课内容,建议你先学习 HTML 表单的创建方法。
在开始第一个 PHP 课程之前,我们先创建一个程序框架,也就是一个用于控制网站运行的类。
创建一个名为 class 的文件夹,并在其中放置一个文件 simpleCMS.php,它将包含我们的网站控制类。同时创建一个 index.php 文件用于启动该系统。我们还需要创建一个用于保存消息的空文件夹 messages,以及样式文件 style.css。结构如下:
class/simpleCMS.php
messages/
index.php
style.css
PHP课程 - 第2课 - 文件操作:打开、写入与读取。
在上一课中,我们已经为我们的留言簿、博客或聊天室搭建了框架。现在只需继续添加功能。在本课中,我们将学习如何将我们的内容写入文件,并从文件中读取内容。
PHP 提供了大量用于文件操作的函数,我们只会学习其中一部分。因为在实际项目中,你的网站大多数情况下会将数据保存到数据库中(我非常确定),而不是写入文件。不过,了解文件操作的原理有助于理解 PHP 的基本机制。之后我们会学习如何操作数据库。
如果你还没有上节课创建的那些文件,请先返回上一课并下载它们。
现在让我们进入添加记录的表单:
/index.php?admin=1
我们将通过这个表单来添加内容。要处理提交的数据,我们需要在 index.php 页面上检查是否存在 $_POST 变量。检查方法非常简单:
PHP课程 - 第3课 - 使用 MySQL 数据库。
你可能觉得现在开始第三课直接学习 MySQL 数据库有点早,但相信我并不是这样。学习 PHP 作为一种 Web 编程语言而不学习它与数据库的交互,就像有一台没有互联网的电脑。你可以在这样的电脑上工作,但却无法获取任何信息。因此,让我们鼓起勇气,即使现在对 SQL 一无所知,也要开始编写数据库查询语句吧。
SQL(Structured Query Language —— “结构化查询语言”)是一种通用的计算机语言,用于在关系型数据库中创建、修改和管理数据。SQL 基于表中记录的集合操作。
PHP 可以与多种数据库一起工作,例如:MySQL、PostgreSQL、Oracle 等等。我们将学习 PHP 与 MySQL 的配合,因为这种组合在网站开发中最为常见。同时,学习 MySQL 的操作也能让你轻松掌握其他数据库的使用,因为 SQL 是一种通用语言,几乎所有关系型数据库的语法都相似。
PHP课程 - 第3.1课 - 使用 MySQL 数据库。创建数据表。
在上一课中,我们学习了如何与数据库建立连接。本课我们将为我们未来的网站创建数据表。首先,在 simpleCMS 类中添加数据库名称:
class simpleCMS { // 管理类
public $host = 'localhost'; // 数据库连接变量
public $username = 'root';
public $password = '';
public $db = 'testDB';
现在我们需要在 MySQL 服务器上创建这个数据库。如果你使用的是 Denwer,本地环境已经包含了 phpMyAdmin。打开 phpMyAdmin 并创建一个新数据库:

PHP课程 - 第3.2课 - 使用 MySQL 数据库。INSERT INTO 插入数据与 SELECT 查询数据。
在上一课中,我们为我们的网站创建了一个数据库表。在本课中,我们将改进该表,并开始与数据库交互:向其中插入数据以及从表中读取数据。我想这并不复杂,所以让我们开始吧。
首先,我建议改进一下我们的 messages 表。目前表中已经有了数据字段,但我们还需要一个用于记录编号的字段。如果你打开 Drupal 的数据库,会发现 node 表中有一个 nid 字段,用来编号节点。同样,我们也需要在 messages 表中添加这样的编号字段。
让我们进入 phpMyAdmin(在 Denwer 中为 http://localhost/tools/phpmyadmin)并编辑表格。在表的开头添加一列,如下图所示:
PHP课程 - 第3.3课 - 使用 MySQL 数据库。UPDATE 更新数据。
我们已经学习了 MySQL 的 SELECT 和 INSERT INTO 操作符,现在是时候了解如何更新已存入数据库的数据了。为此,我们将使用 SQL 操作符 UPDATE。但首先,我们需要修改 index.php 文件,添加一个新的路径处理。找到如下代码:
if( $_GET['admin'] == 1 ){ // 如果 URL 中存在 admin 参数
print $obj->display_admin(); // 如果存在该参数,显示添加表单
}else{
print $obj->display_public(); // 如果没有该参数,显示消息
}
将其替换为以下代码:
PHP课程 - 第3.4课 - 使用 MySQL 数据库。DELETE 删除查询。
在上一课中,我们学习了如何向我们的管理类 simpleCMS 添加新方法,现在让我们再添加一个用于删除记录的方法 delete()。
我们像往常一样添加方法:
public function delete($mid){
}
正如你所见,我们传递了一个参数 $mid —— 即记录的 ID。回想上一课,我们决定使用另一种方式传递参数,即直接通过 GET 请求,而这次我们将尝试用另一种方式传参。
方法已定义好,现在在 index.php 文件中编写路径处理:
PHP课程 - 第3.5课 - 使用 MySQL 数据库。JOIN 操作符。文件上传到服务器。
在开始编写本课之前,我思考了很久该如何更好地讲解带有 JOIN 操作符的查询。事实上,JOIN 操作符用于同时从多个表中进行查询。既然我们需要另一个表,那就先创建它。我建议创建一个用于保存文件的表,我们将在本课中通过表单上传这些文件。这样,本课就会结合两个方向——数据库操作与表单处理。
我们先从添加文件上传字段开始。为了让表单能够上传文件,需要在其参数中添加表单类型:
$content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
通过 enctype 参数,我们告诉浏览器该表单将用于文件上传。现在表单已准备好,我们来添加文件上传字段: