PHP是一門十分優(yōu)秀的web 開發(fā)語言,是全世界廣泛使用的的語言之一。PHP class 在我們的web 開發(fā)里面扮演了非常重要的角色。其中 PHP class implements是一個很重要的概念,可以用于實現(xiàn)接口,將一個類的定義接口與某個實例相對應(yīng)。它為我們的web開發(fā)提供了更加良好的拓展性和可維護(hù)性。
假設(shè)我們現(xiàn)在有這樣一個接口:
interface Shape { public function getArea(); }現(xiàn)在,我們有兩個不同的類來實現(xiàn)這個接口:
class Square implements Shape { private $width; private $height; public function __construct($width, $height) { $this->width = $width; $this->height = $height; } // 實現(xiàn)接口方法 public function getArea() { return $this->width * $this->height; } } class Circle implements Shape { private $radius; public function __construct($radius) { $this->radius = $radius; } // 實現(xiàn)接口方法 public function getArea() { return pi() * ($this->radius ** 2); } }在上面的代碼中,我們定義了一個名為Shape的接口。然后,我們實現(xiàn)了兩個不同的類,Square和Circle,并且都實現(xiàn)了接口中的getArea方法。 接下來,我們可以使用這些類來創(chuàng)建對象并調(diào)用他們所實現(xiàn)的方法:
$square = new Square(5, 5); echo $square->getArea(); // 輸出 25 $circle = new Circle(5); echo $circle->getArea(); // 輸出 78.539816339745如此getArea方法將會根據(jù)Square和Circle類的實現(xiàn)而有所不同。然而,這個方式有個弊端,如果我們想要使用getArea方法,我們必須要確定對象是Square類的實例還是Circle類的實例。 為了解決這個問題,PHP Class implements提供了一個方法來讓類聲明他們實現(xiàn)了一個特定的接口。這時,我們可以使用接口作為驗證,關(guān)心的是getArea方法是否被實現(xiàn)。以下是實現(xiàn)Shape接口并具有g(shù)etArea方法的另一組類:
class Rectangle implements Shape { private $width; private $height; public function __construct($width, $height) { $this->width = $width; $this->height = $height; } // 實現(xiàn)接口方法 public function getArea() { return $this->width * $this->height; } } class Ellipse implements Shape { private $a, $b; public function __construct($a, $b) { $this->a = $a; $this->b = $b; } // 實現(xiàn)接口方法 public function getArea() { return pi() * $this->a * $this->b; } }相比之前,這些類聲明了它們實現(xiàn)了Shape接口。這種方式我們不再關(guān)心是哪個類的實例。例如:
$shapes = array( new Square(5, 5), new Circle(5), new Rectangle(5, 10), new Ellipse(5, 10) ); foreach ($shapes as $shape) { echo get_class($shape) . ': ' . $shape->getArea() . PHP_EOL; }上面的代碼將會輸出:
Square: 25 Circle: 78.539816339745 Rectangle: 50 Ellipse: 157.07963267949我們可以得出結(jié)論,隨著web應(yīng)用程序的開發(fā),PHP class implements變得越來越重要,因為它可以幫助我們更好地處理類繼承以及更好地實現(xiàn)接口。