PHP 7.0+ 中类属性必须显式声明 public、protected 或 private,否则触发致命错误;PHP 5.6 允许隐式 public 但有 E_STRICT 警告,而 PHP 7.0 直接报语法错误,强制封装规范。

PHP 7.0 中,类属性(成员变量)**没有默认的访问控制修饰符**,如果未显式声明 public、protected 或 private,则会触发 致命错误(Fatal Error)。
PHP 7.0 不允许省略访问修饰符
与 PHP 5.x 某些旧版本(如 PHP 5.0–5.4)中“不写修饰符默认为 public”的行为不同,PHP 7.0+ 强制要求所有属性必须明确声明访问级别。
以下代码在 PHP 7.0+ 中会报错:
class User {
$name = 'Alice'; // ❌ 致命错误:Syntax error, unexpected '$name' (T_VARIABLE)
正确写法:必须显式声明 public/protected/private
所有属性必须以访问修饰符开头,否则解析失败。常见合法写法如下:
立即学习“PHP免费学习笔记(深入)”;
-
public $name = 'Alice';—— 外部可读写 -
protected $age = 25;—— 本类及子类可访问 -
private $id = 1;—— 仅本类内部可访问
对比:PHP 5.6 vs PHP 7.0 行为差异
PHP 5.6 允许不写修饰符(隐式 public),但已触发 E_STRICT 警告;PHP 7.0 直接升级为语法错误,杜绝模糊写法。
例如这段代码在 PHP 5.6 可运行(带警告),在 PHP 7.0 无法通过解析:
class Config {
$host = 'localhost'; // ⚠️ PHP 5.6:E_STRICT warning;❌ PHP 7.0:Parse error
实际开发建议
- 始终显式写出
public、protected或private,避免兼容性问题 - 新项目优先使用
private,按需开放为protected或public,符合封装原则 - IDE(如 PhpStorm)和静态分析工具(如 PHPStan)会自动检查缺失修饰符,可提前发现错误



















