为什么要使用这样的摘要?它能加快工作速度还是有什么用?
// file1.php
abstract class Search_Adapter_Abstract {
private $ch = null;
abstract private function __construct()
{
}
abstract public funciton __destruct() {
curl_close($this->ch);
}
abstract public function search($searchString,$offset,$count);
}
// file2.php
include("file1.php");
class abc extends Search_Adapter_Abstract
{
// Will the curl_close now automatically be closed?
}
这里扩展abstract的原因是什么?让我很困惑。我现在能从中得到什么?
最佳答案
您可以使用抽象类来定义和部分实现扩展类应该执行的常见任务。由于没有示例很难解释,请考虑以下内容:
如果没有抽象类,您将不得不定义两个具有相同方法和实现的基本类。由于 OOP 完全是为了防止代码重复,这是完全错误的:
class Car {
public $brand = 'mercedes';
public function gasPerMile($weight)
{
// Useless calculation, purely for illustrating
$foo = $weight * 89 / 100;
return $foo;
}
public function carSpecificFunction()
{
// Only present in class Car
}
}
class Truck {
public $brand = 'MAN';
public function gasPerMile($weight)
{
// Useless calculation, purely for illustrating
$foo = $weight * 89 / 100;
return $foo;
}
public function truckSpecificFunction()
{
// Only present in class Truck
}
}
现在你有了一些共同的属性和方法,它们在两个类中是重复的。为了防止这种情况,我们可以定义一个抽象类,从中扩展 Car
和 Truck
。这样,通用功能就保留在一个地方,扩展类将为卡车或汽车实现特定的属性和方法。
abstract class Vehicle {
abstract public $brand;
public function gasPerMile($weight)
{
// Useless calculation, purely for illustrating
$foo = $weight * 89 / 100;
return $foo;
}
}
这样,您可以确保至少每个扩展 Vehicle
的类都必须指定一个品牌,并且所有扩展类都可以使用通用的 gasPerMile()
方法。
当然,这是一个简单的例子,但希望它能说明为什么抽象类很有用。
关于php - 如何使用 PHP 摘要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243175/