类是面向对象程序设计的基本概念,通俗的理解类就是对现实中某一个种类的东西的抽象, 比如汽车可以抽象为一个类,汽车拥有名字、轮胎、速度、重量等属性,可以有换挡、前进、后退等操作方法。
基本概念
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个目标:重用性、灵活性和扩展性。
PHP 在 4.0 版本之后完善了对 OOP 的支持了。对于小型的应用,使用传统的过程化编程可能更简单也更有效率。然而对于大型的复杂应用时,OOP 就是一个不得不考虑的选择。
类
类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
对象
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。
每个类的定义都以关键字 class
开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义。
类名可以是任何非 PHP 保留字的合法标签。一个合法类名以字母或下划线开头,后面跟着若干字母,数字或下划线。
一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)。
小实践
新建或编辑 index.php
,内容如下:
<?php
/**
* 类:任务
*/
class Task
{
// 属性:任务描述
protected $description;
// 属性:任务状态
public $completed = false;
// 类的构造方法
function __construct($description)
{
$this->description = $description;
}
// 类方法:完成任务
public function complete()
{
$this->completed = true;
}
// 类方法:获取任务的状态
public function isComplete()
{
return $this->completed;
}
public function description()
{
return $this->description;
}
}
// 定义任务数据
$tasks = [
new Task('Go to the store'),
new Task('Finish my screencast'),
new Task('Clean my room')
];
$tasks[0]->complete();
require "index.view.php";
接下来建立文件 index.view.php
用于显示任务信息:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul>
<?php foreach ($tasks as $task) : ?>
<li>
<?php if ($task->completed) : ?>
<strike><?= $task->description(); ?></strike>
<?php else: ?>
<?= $task->description(); ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</body>
</html>
以上的例子简单描述如下:
我们建立一个待做事项的任务类 Task
,实例化了类的对象,并定义成了 $task
数组,通过数组获取对象并调用类的方法 complete()
完成更改了任务状态。之后,在页面上循环打印了任务列表,判断任务是否完成,如果完成的任务就通过 横线(strike) 标记出来。