操作符前后空格的PSR规范解析 ">操作符前后空格的PSR规范解析 " />
psr-2和psr-12均未强制规定`$this->`操作符前后是否允许空格,语法上两者均合法;但为保障可读性与社区一致性,应始终采用无空格风格(如`$this->name`),避免使用`$this -> name`。
在PHP面向对象编程中,$this->是访问当前实例属性或方法的核心语法结构。尽管PSR-2(已归档)和现行通用的PSR-12《Extended Coding Style Guide》详细规范了类声明、缩进、括号、命名等规则,但均未对箭头操作符(->)两侧的空白字符作出任何强制性要求。这意味着以下两种写法在技术层面均符合PSR:
return $this->name; // ✅ 符合PSR(推荐) return $this -> name; // ✅ 语法合法,但不推荐
然而,“允许”不等于“推荐”。PSR的核心目标之一是提升代码的可读性、一致性和协作效率。从实践角度看:
$user->setName('Alice')
->setEmail('alice@example.com')
->activate(); // 每行以->开头,缩进统一,逻辑清晰⚠️ 注意:即使在此类链式调用中,也绝不在同一行内于->两侧插入空格(如$user -> setName()是反模式)。
结论与建议:
✅ 始终使用 $this->property 或 $this->method() —— 无空格、紧凑、高效;
❌ 避免 $this -> property 或 $this -> method() —— 违背社区共识,降低代码专业度;
? 可通过PHP-CS-Fixer配置自动修复(例如启用 no_spaces_after_function_name 不适用,但自定义规则或使用 php-cs-fixer 的 operator_linebr
eak + binary_operator_spaces 组合可强化一致性)。
遵循这一约定,既是尊重PSR“务实兼容”的精神,更是践行专业PHP开发的基本素养。