介面 Interface
Interface
Interface 類別主要用於定義一些關鍵字及 public 的抽象方法,不需要定義方法的 body 及參數。
<?php
interface Logger{
public function excute();
}
首先,針對未使用 Interface 的情況進行說明,
如果在大型專案只有使用 Class,例如以下範例,當我們要切換不同的 Log 方式時,就要透過手動方式在多處 constructor 處進行 hard-coded 變更,例如
<?php
class LogToDatabase {
public function execute($message)
{
var_dump('log the message to a database :'.$message);
}
}
class LogToFile {
public function execute($message)
{
var_dump('log the message to a file :'.$message);
}
}
class UsersController {
protected $logger;
public function __construct(LogToFile $logger)
{
$this->logger = $logger;
}
public function show()
{
$user = 'nahid';
$this->logger->execute($user);
}
}
$controller = new UsersController(new LogToFile);
$controller->show();
例如,目前在 UsersController 使用 LogToFile,
Continue Reading