php interface的实现
PHP 接口的实现
在 PHP 中,接口(Interface)是一种定义方法规范的抽象类型,用于确保实现类必须遵循特定的方法签名。接口不包含具体实现,仅定义方法名称、参数和返回类型。以下是接口的实现方法:
定义接口
使用 interface 关键字定义接口,并在其中声明方法(不包含方法体):
interface LoggerInterface {
public function log(string $message): void;
}
实现接口
类通过 implements 关键字实现接口,必须实现接口中定义的所有方法:
class FileLogger implements LoggerInterface {
public function log(string $message): void {
file_put_contents('log.txt', $message, FILE_APPEND);
}
}
多接口实现
一个类可以同时实现多个接口,用逗号分隔:
interface NotifierInterface {
public function sendNotification(string $message): void;
}
class EmailNotifier implements LoggerInterface, NotifierInterface {
public function log(string $message): void {
// 实现日志记录
}
public function sendNotification(string $message): void {
// 实现通知发送
}
}
接口继承
接口可以通过 extends 继承其他接口,形成层级关系:
interface AdvancedLoggerInterface extends LoggerInterface {
public function logWithTimestamp(string $message): void;
}
class AdvancedLogger implements AdvancedLoggerInterface {
public function log(string $message): void {
// 基础日志实现
}
public function logWithTimestamp(string $message): void {
$this->log('[' . date('Y-m-d H:i:s') . '] ' . $message);
}
}
类型检查
接口可用于类型提示,确保参数或返回值符合规范:
function processLog(LoggerInterface $logger): void {
$logger->log("Processing log entry");
}
$fileLogger = new FileLogger();
processLog($fileLogger); // 合法
常量定义
接口中可以定义常量,实现类无法覆盖这些常量:

interface ConfigInterface {
const DEBUG_MODE = true;
}
echo ConfigInterface::DEBUG_MODE; // 直接访问接口常量
注意事项
- 接口方法必须是
public,其他可见性会报错。 - 实现类的方法必须与接口完全匹配(包括参数类型和返回类型)。
- PHP 8.0 后支持接口中定义
__construct(),但实践中罕见。 - 接口不能包含属性(变量),仅能定义方法和常量。






