2015-10-14 3 views
3

При проверке наличия входного значения и присвоении его переменной I вижу два пути для достижения этой цели:

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) {...}.

Очевидно, что первый метод является более ларавельным способом и может быть более интуитивным (по крайней мере, для чтения), но, с одной стороны, второй метод кажется более быстрым, поскольку он включает в себя меньше вызовов методов, а с другой стороны, потенциально медленнее для ненужного назначения переменной в случае id == null.

Так есть один из способов, чтобы предпочесть или, может быть, некоторые другие проблемы, о которых я еще не знаю?

+0

Я не думаю, что производительность должна быть фактором при принятии решения о maintanable разработки приложений. Кроме того, на миллион звонков я сомневаюсь, что вы сэкономите более 1 миллисекунды, поэтому это будет бессмысленная оптимизация - таким образом, вы можете исключить аргумент производительности. – Mjh

+0

Я бы сказал, что преимущество в производительности за счет меньших вызовов методов - это совершенно спорный вопрос. Если вы на этом уровне микро-оптимизации, вы должны использовать фреймворк в первую очередь. Вызов двух методов вместо одного не обеспечит ощутимого преимущества в производительности. –

ответ

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 
}