php 7.3接口中不允许定义属性,只支持public常量和public abstract方法,任何属性声明均导致解析错误。

PHP 7.3 中,接口(interface)的属性(即类成员变量)根本不存在,因此也谈不上默认访问属性。
接口只允许声明:
-
常量(const):隐式为
public,且不可修改; -
方法签名(abstract methods):隐式为
public abstract,不能带private或protected;
而 不允许定义任何属性(即 $property 形式的变量)。以下写法在 PHP 7.3 中会直接报致命错误(Parse error):
interface UserInterface {
public $name; // ❌ 语法错误:接口中不能声明属性
protected $id; // ❌ 同样非法
}
✅ 正确的接口写法只能是:
interface UserInterface {
public const VERSION = '1.0'; // ✅ 常量,自动 public
public function getName(); // ✅ 方法,默认 public abstract
public function setId(int $id); // ✅ 不写 public 也等价
}
⚠️ 注意:即使你看到某些代码里“看似”在接口中写了属性,那要么是误写,要么是混淆了 PHP 8.1+ 的只读属性(readonly properties)支持仅限于类,接口依然不支持任何实例属性。
所以结论很明确:
- 接口没有属性 → 没有访问控制修饰符可选
- 所有常量自动
public,不可更改 - 所有方法自动
public abstract,不可加private/protected
这并非“默认访问属性”的设计选择,而是语言规范的硬性限制。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











