PHP abstract 抽象类定义与用法示例

1. 什么是抽象类?

抽象类是一种不能够被实例化的类,它只能作为其他类的基类被继承。

在PHP中,抽象类通常被用于定义一些基础的方法和属性,它们被认为是抽象的,因为它们没有具体的实现。

以下是抽象类的定义方式:

abstract class AbstractClass

{

// 抽象方法必须被子类实现

abstract protected function abstractMethod();

// 普通方法可以直接实现

public function normalMethod()

{

return "This is normal method.";

}

}

抽象类由abstract关键字来修饰,其中抽象方法必须被子类实现,而普通方法可以直接实现。

2. 抽象类的用法示例

抽象类通常被用于定义一些基础的方法和属性,然后让子类来实现这些方法和属性。

2.1 定义抽象类

以下是一个定义了抽象方法的抽象类:

abstract class Database

{

public $host = 'localhost';

public $port = '3306';

public $user = 'root';

public $pass = 'root';

public $dbname = 'test';

abstract public function query($sql);

abstract public function fetchAll($result);

}

这个类定义了一些基础的属性和两个抽象方法:query和fetchAll。

2.2 子类继承抽象类

以下是一个继承了上面定义的抽象类的子类:

class Mysql extends Database

{

private $link = null;

public function __construct()

{

$this->link = mysqli_connect($this->host . ':' . $this->port, $this->user, $this->pass, $this->dbname);

if (!$this->link) {

throw new Exception(mysqli_connect_error());

}

}

public function query($sql)

{

$result = mysqli_query($this->link, $sql);

if (!$result) {

throw new Exception(mysqli_error($this->link));

}

return $result;

}

public function fetchAll($result)

{

$rows = array();

while ($row = mysqli_fetch_assoc($result)) {

$rows[] = $row;

}

return $rows;

}

}

这个类继承了抽象类,并且实现了抽象类中定义的query和fetchAll方法。

2.3 使用子类对象操作数据库

以下是使用Mysql类对象来操作数据库的示例:

try {

$mysql = new Mysql();

$result = $mysql->query("SELECT * FROM test");

$rows = $mysql->fetchAll($result);

foreach ($rows as $row) {

echo "id: " . $row['id'] . ", name: " . $row['name'] . ", age: " . $row['age'] . "<br>\n";

}

} catch (Exception $e) {

echo $e->getMessage();

}

这个示例中,首先创建了一个Mysql对象,然后调用了它的query方法来查询数据库,并且调用fetchAll方法来获取查询结果。

3. 总结

抽象类是一种不能够被实例化的类,它通常被用于定义一些基础的方法和属性,然后让子类来实现这些方法和属性。在PHP中,抽象类由abstract关键字来修饰,并且抽象方法必须被子类实现。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签