2016-12-04 45 views
5

PhpStorm'da extract() işlevi kullanılarak oluşturulan tanımlayıcı değişkenleri tetikleyebilecek bir ayar olup olmadığını bilen var mı?PhpStorm: extract() değişkenleri belirleme

Örnek aşağıdaki gibi olacaktır: testinde çıkarılan olmuş anda

/** 
* @return array 
*/ 
protected function orderSet() : array 
{ 
    //... 

    return [ 
     'colour' => $colour, 
     'green' => $green, 
     'orange' => $orange 
    ]; 
} 


/** 
* @test 
*/ 
public function returns_correct_attribute_names() 
{ 
    $params = $this->orderSet(); 
    extract($params); 

    $this->assertEquals(
     'Colour', 
     $colour->name 
    ); 
} 

herhangi bir değişken (tanınmayan) vurgulanan, ama belki de bu davranışı değiştirebilirsiniz bir ayarı vardır edilir?

+1

yukarıdaki kodda örnek Bu değişken bilindiğini ve ne tür IDE anlatmak için @ var' 'ile satır içi PHPDoc yorumunu kullanabilirsiniz:'/** Sınıfım $ renk * @var/' – LazyOne

+0

Teşekkür @LazyOne - ek açıklama kullanmak dışında, PhpStorm'da başka bir şey yok mu? –

+0

Aslında, bunu denedim ve bu da işe yaramadı. –

cevap

6

LazyOne'un sunduğu çözüm aslında işe yarıyor. Ancak, onu uygulamak için ihtiyacınız olan biraz daha bağlam var.

doğru doğrudanekstresi() değil ana fonksiyonu üzerinde yerleştirilmesi gerekir Eğer yorumunu beyan etmek istiyorum değişkenleri hakkında PhpStorm bilgilendirmek.

public function db(){ 
    $db = new SQLite3('db/mysqlitedb.db'); 

    $payments = $db->query('SELECT * FROM payments'); 

    while ($pay = $payments->fetchArray()){ 
     /** 
     * @var string $to_user 
     * @var string $from_user 
     * @var number $amount 
     */ 
     extract($pay); 
     if (isset($to_user, $from_user, $amount)) 
      echo "TO: {$to_user}| FROM: {$from_user}| $ {$amount} \n"; 
    }; 
} 

Bu, kodumdan çalışma örneğidir (bir nedenle kopyalayamazsınız).

extract() işlevini kullanmadan hemen önce görüyorsunuz.

Bonus: ekstresi kullanmayı düşünürseniz, ayrıştırmakta olduğunuz dizinin beklediğiniz alanları içerdiğinden emin olmak için bir isset kullanmanız önerilir.

+3

Huh ... PHP'yi 10 yıldan fazla kullandıktan sonra TIL: isset 1'den fazla değişken alabilir. +1 – Oberst