公告:123目录网为广大站长提供免费收录网站服务,我们将免费进行到底,如需快审服务(10元/站)请联系站长QQ,可自助充值发布。

点击这里在线咨询客服
新站提交
  • 网站:315
  • 待审:0
  • 小程序:12
  • 文章:35791
  • 会员:69

作为一个程序员,写代码的时候发生拼写错误是再正常不过的事情,很多拼写错误可能造成语法错误,IDE 和解释器会提示,然后可以很快得到修改。

而一些特定的错误,比如在条件表达式中把 == 写成 =,这个对于 PHP 来说并不是语法问题,程序可以正常运行,但是结果却是并非自己想要,所以为了避免这类特定的错误,可以使用「尤达表达式」这种编程风格。

什么是尤达表达式

尤达表达式是一种编码的风格,在条件表达式中反转变量和常量、文字或函数的位置,举个例子:

// 正常的写法
if ( $post_type == 'post' ) { /* code */ }

// 尤达表达式
if ( 'post' == $post_type ) { /* code */ }

这种风格的命名,来源于星球大战的一个角色,绝地大师尤达(Yoda),剧中尤达喜欢以颠倒的语序说英语,比如“当九百岁你活到,看起来很好你将不”

在 WordPress 中使用尤达条件表达式防止意外赋值插图

为什么要用尤达表达式

尤达表达式主要用于捕捉编写程序意外引起的错误。

例如以下判断,由于判断相等少写了一个=号,导致程序运行中发生意外的赋值操作:

// 拼写错误,不小心把 == 写成了 =
if ( $post_type = 'post' ) { /* code */ }

当上面的代码运行时,执行如下:

  1. 把值'post'赋值给变量$post_type.
  2. 然后if条件判断为 true.
  3. 大括号中的代码被执行

本来是打算判断一下变量 $post_type 的值是不是'post',一不小心,变成了赋值,这样就改变了预期的行为导致if代码块每次都执行。而实际上如果 $post_type 的值不是'post' 的情况,是不执行的。

而使用尤达表达式,则可以在第一次测试时就捕捉到错误:

if ( 'post' = $post_type ) { /* code */ } 
// Parse error: syntax error, unexpected '=' in xxx.php on line n

尤达表达式将值写在条件的左侧,可以防止意外地将值赋值给变量,因为无法对值进行赋值。

所以尤达表达式还是很有帮助的,但是它的缺点也很明显,与常规的编程直线思维相悖,造成代码阅读和理解上的不顺畅,缺乏可读性。

WordPress 和尤达表达式

WordPress 的 PHP 编码规范是支持尤达表达式的用法,因为当时 PHP 世界几乎没有任何静态分析工具可用,防止在条件表达式中意外赋值的唯一“万无一失”的方法是反转被检查的值和变量的顺序。

但是最新的 WordPress 的 PHP 编码规范开始讨论不推荐使用尤达表达式,进一步将禁止。因为目前代码静态分析工具已经成熟,可以在代码分析阶段设置禁止在条件表达式中赋值的规范来防止意外赋值。当然目前还是提案阶段,具体还朝哪个方向还在讨论中。

标签:wordpress教学

下一篇:【wordpress教学】WordPress 的 PHP 编码规范

上一篇:【wordpress教学】WordPress 6.0 扩展了修改内容中图片标签的能力

相关文章

  575

注册时间:

网站:1 个   小程序:3 个  文章:12 篇

  • 315

    网站

  • 12

    小程序

  • 35791

    文章

  • 69

    会员

赶快注册账号,推广您的网站吧!
最新入驻小程序

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康

体育训练成绩评定2018-06-03

通用课目体育训练成绩评定