Prk博客
互联网资深博主

尤达条件式

尤达条件式的其他称呼有尤达表达式、尤达标记法等,是一种我们在各种语言中的开发风格。

用于解决一些程序员经常遇到的低级错误。比如我们在 PHP 开发一个条件判断,用来判断变量 a 的值是不是 Int 1。

<?php
$a = 1;
if ( $a == 1 ) echo 'var "a" is 1';
else echo 'var "a" is not 1';

很显然执行之后会得到 “var “a” is 1” 。说明条件判断通了。在判断的时候我们经常会用到 if 函数,在括号里的条件中我们要写的表达式或条件式都是用 2~3 个等于号来判断一个值等不等于另外一个值。可以是变量,可以是整数,可以是字符串,也可以是布尔值。但是 1 个等于号就不是判断了!1 个等于号是赋值语句。在判断的时候我们很容易写成赋值语句造成意外赋值,最终导致程序不会按照预期运行或是报错或是遇到安全性问题。

<?php
$a = 233;
if ( $a = 1 ) echo 'var "a" is 1';
else echo 'var "a" is not 1'

因为赋值本身写的没有问题,所以大部分 IDE 不会报错或提示。又或者你和我一样,IDE 的报错会看,但是提示警告重来不看。这个时候尤达条件式就会来拯救这个局面。

尤达条件式是PHP Symfony编码标准的一部分。

尤达条件式中的表达式两个部分与条件语句中的顺序将会对调,并且表达式的常量部分将会放在条件语句的左侧。这种风格的名称来自于星际大战的绝地大师尤达,他使用着缺乏标准语法的英语。

众所周知,周所尽知,以下两种写法的结果是一致的:

<?php if ( $a == 1 ) { ;?>

尤达条件式

<?php if ( 1 == $a ) { ;?>

最后得出来的结果也是一摸一样。但是尤达条件式因为在等于号的左侧是一个不可改变的固定常量,这也就意味着不会出现意外赋值的情况。但是这样子写该报错该是要报错,不过就不会产生安全问题了。不过很多 IDE 即使是使用尤达条件式写完的意外赋值的判断依旧不会报错。这种更加安全的方式被广泛使用,虽然我目前还没有使用,但是之后我有可能会使用这种方式预防意外赋值。

赞(3) 打赏
未经允许不得转载!版权所有:Prk博客 » 尤达条件式
分享到: 更多 (0)

猜你喜欢

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

感谢赞赏~ 你们的鼓励,是我更新的动力

微信扫一扫打赏