SORU
1 Mart 2010, PAZARTESİ


Sıkı Standartlar: Sadece değişkenler referans olarak iletilmesi gereken

$el = array_shift($instance->find(..))

Yukarıdaki kod bir şekilde sıkı standartlarına uyarı raporları,ama bu değil

function get_arr(){
    return array(1,2);
}
$el = array_shift(get_arr());

Ne zaman uyarı zaten rapor verecek?

CEVAP
1 Mart 2010, PAZARTESİ


Aşağıdaki kodu göz önünde bulundurun:

error_reporting(E_STRICT);
class test {
    function test_arr(&$a) {
        var_dump($a);   
    }
    function get_arr() {
        return array(1,2);  
    }
}

$t= new test;
$t->test_arr($t->get_arr());

Bu aşağıdaki çıktıyı oluşturur:

Strict Standards: Only variables should be passed by reference in test.php on line 14
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}

Neden? test::get_arr() yöntemi bir değişken değil ve sıkı modu altında bu bir uyarı oluşturur. Bu davranış, get_arr() yöntemi gibi sezgisel olmayan son dereceverirbir dizi değer.

Katı modda bu hata etrafında almak için bir referans kullanmak bu yüzden her iki yöntem imzası değiştirin:

function test_arr($a) {
    var_dump($a);  
}

array_shift imza değiştiremezsin beri de ara değişkeni kullanabilirsiniz:

$inter= get_arr();
$el= array_shift($inter);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • MVLV28

    MVLV28

    17 Mart 2008