PHP - değerlendirirken iyi uygulamalar IF deyimi

4 Cevap php

Aşağıdaki düşünün

if(!count($_POST)) { echo 'something'; }
if(empty($_POST)) { echo 'something'; }
if(!$_POST) { echo 'something'; }

Hemen hemen yukarıda her satırı aynı şeyi yapmak. Ben hangi ı kullanan bir konuda belli olmamıştır. Ben daha özel olmalı? Bu gerçekten önemli mi?

4 Cevap

Bu kullanabilirsiniz:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // POST request
}

Bu argüman değişken unset veya ayarlanmış ise ya Doğru verir ama (ki boş bir dizi olacak) Yanlış sonucunu beri hep empty() kullanarak tercih ettik. Aklımda bir adım kaydeder ve eşdeğer sadece söz if(!isset($_POST) || !$_POST) { echo 'something'; } kaos değiştirir.

If you want to test if the request was made using a POST request, then checking $_SERVER['request_method'] is the way to go.

Eğer bir dizi boş olup olmadığını öğrenmek istiyorsanız, bazı farklılıklar vardır:

  • boş ()

Değişken "boş" ise boş kontrol edecektir. PHP aşağıdaki değerler boş olarak görüyor:

*  "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)

Boş Eğer bir geri olarak kullanmak anlamına gelir ki, bir dil oluşumudur, bu nedenle aşağıdaki başarısız olur:

$var = array(); call_user_func('empty', $var);

Ayrıca sadece değişkenleri kontrol eder, böylece şu ölümcül bir çok başarısız olur:

if (empty(array()) { // do something }

Ayrıca saymak daha hızlıdır, ancak bu diğerleri üzerinde düşünün yapmamalıyız.

  • saymak ()

Kont "normal" fonksiyonu, ilk olarak bir dizi parametreyi döküm ve boş olup olmadığını kontrol edecektir. Şahsen ben boş diziler denetlemek için bu kullanabilirsiniz.

  • ($ value) {/ / do something} if

Burada $ değer bir mantıksal döküm olacak ve boş diziler false dökme, çünkü sayısı olarak aynı sonucu elde edersiniz, çünkü bu, sayısı biraz farklıdır.

Dahil bir çok büyük yakaladım çünkü döküm var:

$var = ''; // empty string
var_dump(empty($var)); // returns true
var_dump(count($var)); // returns false

Seçtiğiniz ne olursa olsun, onunla tutarlı olmak!