Laravel 4: Input::has() + Input::get() vs. ($var = Input::get()) != null 拉拉维尔 4:Input::has() + Input::get() 和 ($var = Input::get()) != null

3

在检查输入值是否存在并将其分配给变量时,有两种方法可以实现:

if(Input::has('id')) {
    $id = Input::get('id');
    // do some stuff
}

或者更短的方式:if(Input::has('id') && $id = Input::get('id')) {...},还有

$id = Input::get('id');
if($id != null) {
    // do some stuff
}

分别是 if(($id = Input::get('id')) != null) {...}

显然,第一种方法更符合 Laravel 的方式,可能更直观(至少读起来更容易),但一方面第二种方法似乎更快,因为它涉及较少的方法调用,另一方面,在 id == null 的情况下,无意义的变量赋值可能会更慢。

那么是否有一种更好的方法或者我尚未意识到的其他问题?


我认为在决定可维护的应用程序设计时,性能不应该是一个因素。此外,在一百万次调用中,我怀疑你可以节省超过1毫秒,所以这将是一种无意义的优化 - 因此,您可以排除关于性能的争论。 - Mjh
我认为减少方法调用带来的性能优势完全是没有意义的。如果您需要这样微观优化代码,那么您应该首先考虑使用一个框架。调用两个方法而不是一个在性能上不会提供任何可衡量的好处。 - John Dorean
4个回答

3
我总是更看重代码的可读性,而不是为了提高执行速度而牺牲可读性。
if(Input::has('id')) {
    $id = Input::get('id');
    // do some stuff
}

可能会稍微慢一些,但是影响非常小,可以忽略不计。


2
我更喜欢你的第一种方式:
if(Input::has('id')) {
    $id = Input::get('id');
    // do some stuff
}

由于这个速度微不足道,你有更重要的事情需要优化和加速。


0

你可以做到这一点,

if ($id = Input::get('id', null)) {
    // do some stuff
}

get 的第二个参数是默认值,如果没有输入 id 则返回该值。


0

我认为你可以像这样使用Input的默认值

$id = Input::get('id'); // the default value will be null if you have no id parameter
if(!is_null($id)){ 
  // do your code here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接